Home » Archimedes archive » Acorn User » AU 1998-02 B.adf » Extras » Start/!Start/!runimage
Start/!Start/!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 1998-02 B.adf » Extras |
Filename: | Start/!Start/!runimage |
Read OK: | ✔ |
File size: | E0DB bytes |
Load address: | 0000 |
Exec address: | 0000 |
File contents
10REM *********************************************** 20REM Name : Start 30REM Version : 4.00 40REM Purpose : Make RiscOS Desktop more efficient 50REM Author : Barny Short 60REM Date : Thu 12th September 1996 70REM *********************************************** 80REM Revision history : 90REM 24-Aug-1997 Added Quickfile Icon to iconbar. 100REM Clicking on icon open/closes. 110REM 25-Aug-1997 Added ShortCuts facility. 120REM Similar feature to Win95 tool. 130REM 04-Sep-1997 Added nested directories facility. 140REM Changed Shift+IconbarMenu to 150REM include EditLinks facility. 160REM Changed name to Start and changed 170REM shortcuts directory to Links 180REM 05-Sep-1997 Changed way window cache is 190REM administered. Became version 2.00 200REM 06-Sep-1997 Changed format of link files. 210REM Added entire boot at start up. 220REM 07-Sep-1997 Fixed a mother of a bug that 230REM probably has something to do with 240REM the pipeline. Also added much 250REM more intelligent file type 260REM checking. 270REM 14-Sep-1997 General improvements regarding 280REM drag'n'drop and tooltip. 290REM 04-Nov-1997 Changed icon bar icon 300REM 05-Nov-1997 Added the ~ history directory 310REM to catch all double clicks on 320REM file icons. 330REM Also added a ~~ directory. Can't 340REM think what for. 350REM Fixed the EMPTY directory bug. 360REM Changed action of TOOL_TIP when 370REM pointer moved over it so now it 380REM gets 'pushed' around. 390REM 06-Nov-1997 Changed how destination directory 400REM is selected for ADDNEWLINK. User 410REM now has to explicitly move to the 420REM required menu. 430REM Created system directorys that 440REM begin with a ~ symbol. These are 450REM updated with a history of the 460REM desktop filer usage. 470REM 07-Nov-1997 Built the Alias$Link run tool. 480REM Fixed a SysFilePrefix related 490REM shortcutmenuselect bug. 500REM Added icon bar toggle feature 510REM when mouse hits bottom of screen. 520REM Added ALT-START_MENU click to 530REM efficiently delete items in the 540REM startup menu. 550REM 09-Nov-1997 Added auto cascading for desktop 560REM windows. Some windows are never 570REM auto cascaded. These are: 580REM a) The Tooltip window 590REM b) Start's dummyback window 600REM c) Any window toggled full size, 610REM that has input focus, 620REM and a toggle size icon. 630REM 09-Nov-1997 Added animated iconbar icon and 640REM alternative tool tips. 650REM 11-Nov-1997 Added selective cascading of 660REM windows to reduce difficulty in 670REM using menus. Changed Iconbar 680REM button usage and 'alternative' 690REM tool tips. 700REM 19-Nov-1997 Added sensible task bar tool tip. 710REM Included StartPath$ to guard 720REM against the <Start$Dir> getting 730REM corrupted. 740REM Added extra checks before 750REM deleteing auto-create links. 760REM Auto ensure ~ directorys are 770REM there whenever they are needed. 780REM 21-Nov-1997 Disabled window repositioning 790REM when a menu is displayed with 800REM MenuIsOpenFlag%. 810REM 21-Nov-1997 Added window drifting. Added 820REM dragable yes/no icons to window 830REM cache management. 840REM 22-Nov-1997 Ensured all windows were 850REM properly cascaded, even if still 860REM waiting for a state to occur 870REM when they were allowed to be 880REM moved. 890REM *********************************************** 900REM Note: 910REM When running this program, it is important 920REM to ensure that the corresponding !Boot or 930REM !run file is run at the same time because 940REM they ensure the <Start$Dir> variable is set 950REM correctly. ie. Use the !Run file to run this 960REM file. 970REM *********************************************** 980 990PictureType%=&d94:REM Artworks 1000DocumentType%=&bc5:REM Impression Document 1010User$="Admin":REM User name is Admin 1020 1030app$="Start" 1040StartPath$="" 1050StartDate$="" 1060DIM startpath 255, startpathvar 32, startdatevar 32 1070$startdatevar="<Sys$Time> <Sys$Date>"+CHR$0 1080$startpathvar="<Start$Dir>"+CHR$0 1090 1100REM Aquire the start path to use for delete operations 1110SYS"OS_GSTrans",startpathvar,startpath,255 1120StartPath$=FNstring(startpath) 1130 1140DIM errorblock% 2048, block% 2048, block2% 2048, clistring 255 1150DIM winblock% 2048 1160 1170DIM InvalidDrive$(255) 1180InvalidDriveCount%=0 1190 1200DIM dragspritename% 32, boundspritebox% 32 1210 1220ON ERROR PROCerror(REPORT$+" at line "+STR$ERL):CLOSE#0:END 1230 1240 1250CACHE_SIZE% = 4096 1260pause% = 200 1270open_type%=1 1280close_type%=2 1290add_window%=1 1300subtract_window%=2 1310drag_type%=5 1320adjust%=1 1330menu%=2 1340select%=4 1350iconbarhandle%=0 1360dircount%=0 1370linkloadaddr%=0 1380objecttype%=0 1390linkmenu%=0 1400addlink%=0 1410iconbar_timer%=TIME:iconbar_timerflag%=0 1420whandle_tooltip%=0:ToolTip%=0:tooltip_timer%=0 1430override_tooltip%=0:OldToolTip%=0 1440internalstackposition%=-2 1450oldstackposition%=0 1460currentwindow%=0 1470currentmenuhandle%=0 1480firstmenuhandle%=-3 1490IconBarMenuOpen%=0 1500StartMenuSeperator%=-1 1510SysFilePrefix%=126 1520BottomEdgeFlag=0 1530after%=0:cascade%=0 1540whandle_dummyback%=0 1550LastRightEdge%=0 1560CascadeRow%=0 1570RandTipMax%=13 1580DIM RandTip$(RandTipMax%) 1590RandTip$(0)=" Cannabis" 1600RandTip$(1)=" LSD" 1610RandTip$(2)=" Opium" 1620RandTip$(3)=" Magic Mushrooms" 1630RandTip$(4)=" Mescaline" 1640RandTip$(5)=" Peyote" 1650RandTip$(6)=" Lophophora Williamsii" 1660RandTip$(7)=" Trips" 1670RandTip$(8)=" Acid" 1680RandTip$(9)=" Speed" 1690RandTip$(10)=" Mind Bending Drugs" 1700RandTip$(11)=" Psychedelics" 1710RandTip$(12)=" Fun" 1720 1730IconBarAnimSize%=7 1740DIM IconBarAnim$(IconBarAnimSize%) 1750IconBarAnim$(0)="Sstart0" 1760IconBarAnim$(1)="Sstart1" 1770IconBarAnim$(2)="Sstart2" 1780IconBarAnim$(3)="Sstart3" 1790IconBarAnim$(4)="Sstart4" 1800IconBarAnim$(5)="Sstart5" 1810IconBarAnim$(6)="Sstart6" 1820IconBarAnimStep%=0 1830IconBarAnimDir%=1 1840 1850 1860MenuIsOpenFlag%=0 1870AutoaddLock%=0 1880 1890 1900DIM dblock% 1024, bootblock% 1024, shortcutmenu% 10192, shortcutmenudata% 20384 1910DIM main_menu% 256, typebuf% 256, iconbarlabel% 32, iconbardata% 32 1920DIM string% 1024, bootstring% 1024, infodata% 2048, tooltipdata% 2048, tooltipicon% 512 1930DIM cache% CACHE_SIZE% 1940DIM dirlist%(32), dirptr%(32) 1950 1960currentmenu%=main_menu% 1970cache_ext%=0 1980task_handle%=0 1990drag_button%=adjust% 2000DX%=0 2010drag_icon%=0 2020path$="" 2030in_leftregion=FALSE 2040in_rightregion=FALSE 2050qf_timer=TIME 2060regionxs%=16 2070regionys%=64 2080$iconbarlabel%="Start"+CHR$0 2090$iconbardata%="S!start"+CHR$0 2100globalmenuptr%=shortcutmenu% 2110 2120$iconbarlabel%=""+CHR$0 2130$iconbardata%=IconBarAnim$(0)+CHR$0 2140 2150 2160REM *************************************************** 2170 2180quit%=FALSE 2190 2200PROCinit 2210REMPROCerror("Start path = "+StartPath$+CHR$0) 2220PROCCreateToolTip 2230PROCloadcache 2240PROCDirectoryBoot(StartPath$+".Users."+User$+".Links") 2250 2260WHILE NOT quit% 2270PROCpoll 2280ENDWHILE 2290 2300PROCDestroyToolTip 2310SYS "Wimp_CloseDown" 2320END 2330 2340REM *************************************************** 2350 2360DEFPROCGetDate 2370REM Aquire date and time 2380SYS"OS_GSTrans",startdatevar,startpath,255 2390StartDate$=FNstring(startpath) 2400ENDPROC 2410 2420REM *************************************************** 2430 2440REM poll loop 2450DEFPROCpoll 2460SYS"Wimp_Poll",0,block% TO reason% 2470REM IF reason%<>0 PROCerror(STR$(reason%)+CHR$0) 2480CASE reason% OF 2490WHEN 0:PROCnull_reason 2500WHEN 2:PROCPollReason2 2510WHEN 3:SYS "Wimp_CloseWindow",,block% 2520WHEN 6:PROCclick(block%!12) 2530WHEN 7:PROCdragdrop 2540REM WHEN 8:PROCkeypressed 2550WHEN 9:PROCmenuselect 2560WHEN 17,18:PROCreceive(reason%) 2570REM WHEN 19:PROCerror("Unsupported window definition.") 2580ENDCASE 2590ENDPROC 2600 2610REM *************************************************** 2620 2630DEFPROCPollReason2 2640IF ((!block%) > &ffff) THEN 2650REM PROCerror("Window tobeopened:"+STR$~(!block%)+" behind: "+STR$~(block%!28)+CHR$0) 2660SYS "Wimp_OpenWindow",,block% 2670ELSE 2680REMcurrentwindow%=!block%:PROCOpenToolTip(2) 2690REM This is very wierd - the windowhandle is invalid and equals 2700REM the mouse pointer x position - must be a menu I reckon or 2710REM could be a bug in RISCOS. 2720MenuIsOpenFlag%=1 2730ENDIF 2740 2750ENDPROC 2760 2770DEFPROCGetScreenSize 2780SYS"OS_ReadModeVariable",-1,4 TO ,,OS_EX%:REM Eigen 2790SYS"OS_ReadModeVariable",-1,5 TO ,,OS_EY% 2800SYS"OS_ReadModeVariable",-1,11 TO ,,OS_WX%:REM Size 2810SYS"OS_ReadModeVariable",-1,12 TO ,,OS_WY% 2820OS_MX%=(1+OS_WX%) << OS_EX% 2830OS_MY%=(1+OS_WY%) << OS_EY% 2840ENDPROC 2850 2860REMDEFPROCkeypressed 2870REMLOCAL Char% 2880REMChar%=block%!24 2890REMREM Is this the delete or backspace key? 2900REMIF (Char%=8 OR Char%=&7f) THEN 2910REMREM Is this in a menu? 2920REMPROCerror("Window handle = "+STR$~(block%!0)+" -- main_menu% = "+STR$~(main_menu%)+CHR$0) 2930REMELSE 2940REMSYS "Wimp_ProcessKey",Char% 2950REMENDIF 2960REMENDPROC 2970 2980DEFPROCReopenDummyWindow 2990 !block2%=whandle_dummyback% 3000 SYS"Wimp_GetWindowState",,block2% 3010 block2%!8=-1024:block2%!16=-1024 3020 block2%!28=-2 3030 SYS"Wimp_OpenWindow",,block2% 3040 after%=whandle_dummyback%:cascade%=0 3050 MenuIsOpenFlag%=0 3060ENDPROC 3070 3080DEF PROCcascade 3090LOCAL q%,OldAfter% 3100LOCAL sx%, sy%, ox%, oy% 3110LOCAL ReopenFlag%, StackFlag% 3120LOCAL PaneFlag%, IsOpenFlag%, IsMoveableFlag% 3130LOCAL CurrentWin%,CurrentIcon% 3140 3150q%=winblock% 3160PaneFlag%=FALSE 3170 3180REM Get Current window immediately under pointer 3190SYS"Wimp_GetPointerInfo",,block2% 3200CurrentWinPtr%=block2%!12 3210CurrentIcon%=block2%!16 3220 3230OldAfter%=after% 3240!q%=after% 3250REM _Try_ and reopen this desktop window ... 3260SYS "XWimp_GetWindowState",,q% 3270IFafter%=-1 PROCReopenDummyWindow:ENDPROC 3280CurrentWin%=!q% 3290after%=q%!28 3300IF (CurrentWin%=-1 OR (after%=OldAfter%)) THEN 3310 PROCReopenDummyWindow 3320ELSE 3330 REM Reposition window 3340 IF (cascade%=0) CascadeRow%=0:LastRightEdge%=0 3350 REM !q%=after%:SYS "Wimp_GetWindowState",,q% 3360 3370 3380 PaneFlag%=FALSE 3390 IF (((q%!32) AND ((2^22)+(2^23)))>0) PaneFlag%=TRUE 3400 IF (((q%!32) AND 32)=32) PaneFlag%=TRUE 3410 IsOpenFlag% = ((q%!32) AND (2^16)) 3420 IsMoveableFlag% = ((q%!32) AND 2) 3430 REM Has window moved at all for repositioning? 3440 3450 ReopenFlag%=TRUE 3460 StackFlag%=TRUE 3470REM IF (((q%!32) AND (2^18))>0 AND ((q%!32) AND (2^20))>0 AND ((q%!32) AND (2^27))>0) StackFlag%=FALSE:ReopenFlag%=FALSE:REM Toggled Maximise & has input focus & has toggle icon 3480IF (CurrentWin%=CurrentWinPtr% AND ((q%!32) AND (2^28))=0 AND ((q%!32) AND (2^30))=0 AND ((q%!32) AND (2^17))>0 AND after%=-1) StackFlag%=FALSE:ReopenFlag%=FALSE:REM Under pointer and _no_ horiz/vert scroll bars and fully visible (likely to be part of menu so leave alone) 3490IF (((q%!32) AND (2^18))>0 AND ((q%!32) AND (2^27))>0 AND ((q%!32) AND (2^28))>0 AND ((q%!32) AND (2^30))>0) StackFlag%=FALSE:ReopenFlag%=FALSE:REM Toggled Maximise & has toggle icon and has horiz/vert scroll bars - likely to be a word processor window 3500IF ( (q%!16 < (OS_MY%-(cascade%*40))) AND (q%!4 > 0) AND (q%!12 < (OS_MX%-40)) AND (q%!8>40) AND ((q%!32) AND (2^17))>0) StackFlag%=FALSE:ReopenFlag%=FALSE:REM Fully visible 3510 IF (CurrentWin%=whandle_tooltip%) StackFlag%=FALSE:ReopenFlag%=FALSE 3520 IF (CurrentWin%=whandle_dummyback%) StackFlag%=FALSE:ReopenFlag%=FALSE 3530 IF (PaneFlag%=TRUE) StackFlag%=FALSE:ReopenFlag%=FALSE 3540 IF (IsOpenFlag%=0 OR IsMoveableFlag%=0) StackFlag%=FALSE:ReopenFlag%=FALSE 3550 IF (MenuIsOpenFlag%=1) StackFlag%=FALSE:ReopenFlag%=FALSE 3560REM If pointer is over window and within the work area 3570REM then don't move it. 3580IF (CurrentWin%=CurrentWinPtr%) ReopenFlag%=FALSE 3590 REM Reset position of window and do a Re-Open 3600 REM Get size of window 3610 IF (StackFlag%=TRUE) THEN 3620 ox%=q%!4 3630 oy%=q%!16 3640 sx%=(q%!12)-(q%!4) 3650 sy%=(q%!16)-(q%!8) 3660 3670 REM Try and fit as many windows horizontally as possible 3680 IF ((LastRightEdge%+sx%)<(OS_MX%-40)) THEN 3690 q%!4=LastRightEdge% 3700 q%!16=(OS_MY%-40)-(CascadeRow%*40):REM 1160 3710 q%!12=(q%!4)+sx% 3720 IF ((q%!12)>(OS_MX%-40)) q%!12=(OS_MX%-40) 3730 q%!8=(q%!16)-sy% 3740 IF ((q%!8)<40) q%!8=40 3750 LastRightEdge%=(q%!12)+48 3760 ELSE 3770 LastRightEdge%=0 3780 CascadeRow%+=1 3790 q%!4=(CascadeRow%*8) 3800 q%!16=(OS_MY%-40)-(CascadeRow%*40):REM 1160 3810 q%!12=(q%!4)+sx% 3820 IF ((q%!12)>(OS_MX%-40)) q%!12=(OS_MX%-40) 3830 q%!8=(q%!16)-sy% 3840 IF ((q%!8)<40) q%!8=40 3850 LastRightEdge%=(q%!12)+48 3860 ENDIF 3870 3880 3890 REM Enable window 'drift' 3900 IF (ox%<>q%!4) THEN 3910 nx%=q%!4 3920 sx%=(q%!12)-(q%!4) 3930 dx%=nx%-ox% 3940 IF (ABS(dx%)>40) THEN 3950 nx%=ox%+(SGN(dx%)*40) 3960 q%!4=nx%:q%!12=nx%+sx% 3970 ENDIF 3980 ENDIF 3990 IF (oy%<>q%!16) THEN 4000 ny%=q%!16 4010 sy%=(q%!16)-(q%!8) 4020 dy%=ny%-oy% 4030 IF (ABS(dy%)>40) THEN 4040 ny%=oy%+(SGN(dy%)*40) 4050 q%!16=ny%:q%!8=ny%-sy% 4060 ENDIF 4070 ENDIF 4080 4090 REM Having allowed space for this window in the 4100 REM window cascade, are we sure we want to move 4110 REM it just yet? 4120 4130 IF (ReopenFlag%=TRUE) THEN 4140 SYS "XWimp_SendMessage",2,q%,CurrentWin% 4150 ENDIF 4160 4170 cascade%+=1 4180 4190 ENDIF 4200 ENDIF 4210ENDPROC 4220 4230REM ********************************************* 4240 4250DEFPROCAnimateIconBar 4260$iconbardata%=IconBarAnim$(IconBarAnimStep%) 4270IconBarAnimStep%+=IconBarAnimDir% 4280IF (IconBarAnimStep%<0 OR IconBarAnimStep%=IconBarAnimSize%) THEN 4290IconBarAnimStep%=0 4300REM IconBarAnimDir% = IconBarAnimDir%*-1 4310REM IconBarAnimStep%+=IconBarAnimDir% 4320ENDIF 4330REM Activate an update on the task bar icon ..... 4340!block2%=-2 4350block2%!4=iconbarhandle% 4360SYS"Wimp_GetIconState",,block2% 4370block2%!8=0:REM Don't change anything, 4380block2%!12=0:REM Just signal an update ... 4390SYS"Wimp_SetIconState",,block2% 4400ENDPROC 4410 4420REM ********************************************* 4430REM What shall we do during the idle wimp poll ? 4440REM This is the most important aspect of this 4450REM program and one which should enable a lot of 4460REM change with future versions of the software. 4470REM ********************************************* 4480DEFPROCnull_reason 4490LOCAL window% 4500SYS"Wimp_GetPointerInfo",,block% 4510X%=block%!0 4520Y%=block%!4 4530window%=block%!12 4540currentwindow%=window% 4550PROCGetScreenSize 4560 4570REM Are any mouse buttons pressed? 4580REM If not then reorganise [cascade] windows 4590IF (((block%!8) AND 7)=0) THEN 4600 PROCcascade 4610ENDIF 4620 4630REM Update the task bar icon each WIMP POLL 4640PROCAnimateIconBar 4650 4660REM If the task bar tool tip shows the TIME 4670REM then update it ... 4680IF (ToolTip%=1) PROCUpdateToolTipTime 4690 4700SYS"Wimp_GetPointerInfo",,block% 4710X%=block%!0 4720Y%=block%!4 4730window%=block%!12 4740currentwindow%=window% 4750 4760REM This may be needed to stop flicker 4770REM *fx19 4780 4790REMENDIF 4800REMIF (qf_timer>0) PROCfocusdelay 4810IF (X%<regionxs%) THEN 4820PROCleft_corner:ENDPROC 4830ENDIF 4840IF (X%>(OS_MX%-regionxs%)) THEN 4850PROCright_corner:ENDPROC 4860ENDIF 4870REM Is Pointer over iconbar icon? 4880REM Close tooltip if pointer moves over it (effectively push tip) 4890REM IF (((block%!12)=-2 AND (block%!16=iconbarhandle%)) OR (window%=whandle_tooltip% AND ToolTip%>0)) THEN 4900IF (((block%!12)=-2 AND (block%!16=iconbarhandle%))) THEN 4910PROCmove_overiconbar 4920ELSE 4930OldToolTip%=0 4940 4950REMIF (((TIME-tooltip_timer%)>100) AND ToolTip%>0) THEN 4960IF (ToolTip%>0) THEN 4970IF (block%!16 <> whandle_tooltip%) iconbar_timerflag%=0 4980PROCCloseToolTip 4990ELSE 5000REMiconbar_timer%=TIME 5010iconbar_timerflag%=0 5020ENDIF 5030ENDIF 5040REMIF (window%=-2) firstmenuhandle%=-2 5050REMIF (window%<>-2) PROCpointernotoniconbar:REM Must come first 5060IF ((X%>regionxs% AND X%<(OS_MX%-regionxs%)) OR Y%>regionys%) PROCoutoffocus 5070REMIF ((X%>regionxs% AND X%<(OS_MX%-regionxs%)) AND Y%=0) PROCpointeronbottomedge 5080IF (Y%=0) THEN 5090IF (BottomEdgeFlag=0) PROCpointeronbottomedge 5100ELSE 5110BottomEdgeFlag=0 5120ENDIF 5130 5140REMPROCCloseToolTip 5150REMPROCOpenToolTip(2) 5160ENDPROC 5170 5180REM *************************************************** 5190 5200DEFPROCpointeronbottomedge 5210LOCAL stackposition% 5220REM Is iconbar at top of stack? If not make it so. 5230REMSYS"Wimp_ProcessKey",&1dc 5240 5250REM PROCerror("Pointer on bottom edge."+CHR$0) 5260REM Open up start menu if it's not already open 5270BottomEdgeFlag=1 5280REM Close relevant window 5290REMSYS "Wimp_CreateMenu",,-1 5300REM Open start menu 5310REMPROCclick_iconbarmenu 5320REMENDPROC 5330 5340REM!block%=-2 5350REMSYS"Wimp_GetWindowState",,block% 5360REMstackposition%=block%!28 5370REMIF (stackposition%<>-1) THEN 5380REMblock%!28=-1 5390REMSYS"Wimp_OpenWindow",,block% 5400REM Toggle icon bar back/front 5410SYS"Wimp_ProcessKey",&1dc 5420 5430REM Reopen dummyback window at bottom of stack 5440!block%=whandle_dummyback% 5450SYS"Wimp_GetWindowState",,block% 5460block%!8=-1024:block%!16=-1024 5470block%!28=-2 5480SYS"Wimp_OpenWindow",,block% 5490after%=whandle_dummyback%:cascade%=0 5500 5510ENDPROC 5520 5530DEFPROCpointernotoniconbar 5540REM ENDPROC 5550REM Is iconbar on bottom of stack? If not make it so/ 5560REM No allowed to manually open iconbar so use our internal 5570REM value 5580IF (ToolTip%=0 OR (ToolTip%<>0 AND currentwindow%<>whandle_tooltip%)) THEN 5590IF firstmenuhandle%=-2 firstmenuhandle%=currentwindow% 5600ENDIF 5610 5620!block%=-2 5630SYS"Wimp_GetWindowState",,block% 5640stackposition%=block%!28 5650REMIF (stackposition%=oldstackposition%) THEN 5660IF (stackposition%<>oldstackposition%) THEN 5670REMblock%!28=-2 5680REMSYS"Wimp_CloseWindow",,block% 5690IF (currentwindow%<>firstmenuhandle% AND firstmenuhandle%>-2) THEN 5700SYS"Wimp_ProcessKey",&1dc 5710firstmenuhandle%=-3 5720REMENDIF 5730!block%=-2 5740SYS"Wimp_GetWindowState",,block% 5750stackposition%=block%!28 5760REMIF (stackposition%<>-1) oldstackposition%=stackposition% 5770oldstackposition%=stackposition% 5780ENDIF 5790ENDIF 5800ENDPROC 5810 5820REM IF (internalstackposition%=-1 AND currentwindow%>0) THEN 5830REM SYS"Wimp_ProcessKey",&1dc 5840REM PROCerror("Window : "+STR$(currentwindow%)+CHR$0) 5850REM internalstackposition%=-2:REM At bottom 5860REM ENDIF 5870REM ENDPROC 5880 5890DEFPROCoutoffocus 5900IF (in_leftregion) THEN PROCleaveleftregion 5910IF (in_rightregion) THEN PROCleaverightregion 5920qf_timer=TIME 5930ENDPROC 5940 5950DEFPROCleaveleftregion 5960in_leftregion=FALSE 5970ENDPROC 5980 5990DEFPROCleaverightregion 6000in_rightregion=FALSE 6010ENDPROC 6020 6030DEFPROCfocusdelay 6040IF ((TIME-pause%)>qf_timer) THEN qf_timer=-1:PROCOpenInfoBox 6050ENDPROC 6060 6070DEFPROCleft_corner 6080IF (in_leftregion=FALSE) ec_timer=TIME:ec_flag=FALSE 6090in_leftregion=TRUE 6100REM Check if windows need opening 6110IF (TIME-ec_timer>=50 AND ec_flag=FALSE) THEN 6120PROCreopenfiler:ec_flag=TRUE 6130ENDIF 6140 6150ENDPROC 6160 6170DEFPROCright_corner 6180IF (in_rightregion=FALSE) ec_timer=TIME:ec_flag=FALSE 6190in_rightregion=TRUE 6200REM Check if windows need closing 6210REMIF (TIME-ec_timer>=100 AND ec_flag=FALSE) THEN 6220IF (ec_flag=FALSE) THEN 6230PROCclosefiler:PROCCloseInfoBox:ec_flag=TRUE 6240ENDIF 6250ENDPROC 6260 6270REM *************************************************** 6280 6290DEFPROCOpenInfoBox 6300!block%=whandle_info% 6310SYS"Wimp_GetWindowState",,block% 6320SYS"Wimp_OpenWindow",,block% 6330ENDPROC 6340 6350DEFPROCCloseInfoBox 6360!block%=whandle_info% 6370SYS"Wimp_CloseWindow",,block% 6380ENDPROC 6390 6400REM *************************************************** 6410 6420DEFPROCCreateToolTip 6430LOCAL XOffset% 6440REM Create the tooltip and dummy global windows 6450REM The tooltip window displays brief info about the 6460REM icon under the pointer. 6470REM The dummy window is needed to provide a 'bottom' 6480REM window for the window re-organisation tool to 6490REM start from. 6500 6510REM Create the tooltip window 6520Tip$="Hello" 6530XS%=(LEN(Tip$)*16)+20:YS%=40 6540SYS"Wimp_GetPointerInfo",,block% 6550REM Define screen position of tooltip 6560XOffset%=XS%/2 6570IF (XOffset%>32) XOffset%=32 6580X%=(!block%)-XOffset% 6590Y%=(block%!4)+24 6600PROCGetScreenSize 6610IF ((X%+XS%)>OS_MX%) X%=OS_MX%-XS% 6620IF (X%<0) X%=0 6630IF ((Y%+YS%)>OS_MY%) Y%=(block%!4)-(YS%+24) 6640REM IF ((Y%-YS%)<0) Y%=0 6650!block%=X%:block%!4=Y%:block%!8=X%+XS%:block%!12=Y%+YS% 6660XS%=(512*16)+20:YS%=40 6670block%!16=0:block%!20=0:REM Scroll offsets 6680block%!24=-1:block%!28=&80000050:REM Depth, window flags 6690block%!32=&00070207:block%!36=&120103:REM Colours 6700block%!40=0:block%!44=-YS%:block%!48=XS%:block%!52=0 6710block%!56=&19:block%!60=3<<12:REM Titlebar/workarea flags 6720block%!64=0:block%!68=0:REM Sprite area 6730$(block%+72)=CHR$0 6740block%!84=1 6750REM Define 1 icon starting at block%!88 6760!tooltipicon%=0:REM Null validation string 6770$(tooltipicon%+4)=Tip$+CHR$0:REM Icon text 6780block%!88=4:REM Bounding box 6790block%!92=-40:REM Bounding box 6800block%!96=((512*16)+20):REM Bounding box of _largest_ tip 6810block%!100=0:REM Bounding box 6820block%!104=&17003101 6830block%!108=tooltipicon%+4 6840block%!112=tooltipicon% 6850block%!116=512:REM Buffer length 6860SYS"Wimp_CreateWindow",,block% TO whandle_tooltip% 6870XS%=(LEN(Tip$)*16)+20:YS%=40 6880SYS"Wimp_GetPointerInfo",,block% 6890REM Define screen position of tooltip 6900XOffset%=XS%/2 6910IF (XOffset%>32) XOffset%=32 6920X%=(!block%)-XOffset% 6930PROCGetScreenSize 6940IF ((X%+XS%)>OS_MX%) X%=OS_MX%-XS% 6950IF (X%<0) X%=0 6960IF ((Y%+YS%)>OS_MY%) Y%=(block%!4)-(YS%+24) 6970Y%=-1024 6980REM IF ((Y%-YS%)<0) Y%=0 6990REM Get Tooltip window state 7000!block%=whandle_tooltip% 7010SYS"Wimp_GetWindowState",,block% 7020block%!4=X%:block%!8=-1024:block%!12=X%+XS%:block%!16=-1024 7030block%!20=0:block%!24=0:REM Scroll offsets 7040REM block%!28=-1 7050SYS"Wimp_OpenWindow",,block% 7060ToolTip%=0 7070 7080 7090 7100REM Create the dummy back window 7110REM Define screen position of tooltip 7120XS%=(LEN(Tip$)*16)+20:YS%=40 7130XOffset%=XS%/2 7140IF (XOffset%>32) XOffset%=32 7150X%=64 7160Y%=-1024 7170!block%=X%:block%!4=Y%:block%!8=X%+XS%:block%!12=Y%+YS% 7180XS%=(512*16)+20:YS%=40 7190block%!16=0:block%!20=0:REM Scroll offsets 7200block%!24=-1:block%!28=&80000050:REM Depth, window flags 7210block%!32=&00070207:block%!36=&120103:REM Colours 7220block%!40=0:block%!44=-YS%:block%!48=XS%:block%!52=0 7230block%!56=&19:block%!60=3<<12:REM Titlebar/workarea flags 7240block%!64=0:block%!68=0:REM Sprite area 7250$(block%+72)=CHR$0 7260block%!84=1 7270REM Define 1 icon starting at block%!88 7280!tooltipicon%=0:REM Null validation string 7290$(tooltipicon%+4)=Tip$+CHR$0:REM Icon text 7300block%!88=4:REM Bounding box 7310block%!92=-32:REM Bounding box 7320block%!96=((512*16)+20):REM Bounding box of _largest_ tip 7330block%!100=-8:REM Bounding box 7340block%!104=&17003101 7350block%!108=tooltipicon%+4 7360block%!112=tooltipicon% 7370block%!116=512:REM Buffer length 7380SYS"Wimp_CreateWindow",,block% TO whandle_dummyback% 7390REM Get Tooltip window state 7400!block%=whandle_dummyback% 7410SYS"Wimp_GetWindowState",,block% 7420block%!28=-2 7430SYS"Wimp_OpenWindow",,block% 7440after%=whandle_dummyback%:cascade%=0 7450 7460ENDPROC 7470 7480DEFPROCDestroyToolTip 7490!block%=whandle_tooltip% 7500SYS"Wimp_CloseWindow",,block% 7510SYS"Wimp_DeleteWindow",,block% 7520 7530!block%=whandle_dummyback% 7540SYS"Wimp_CloseWindow",,block% 7550SYS"Wimp_DeleteWindow",,block% 7560ENDPROC 7570 7580DEFPROCUpdateToolTipTime 7590LOCAL XOffset%, OldTip$ 7600OldTip$=Tip$ 7610PROCGetDate 7620Tip$=StartDate$ 7630IF (OldTip$<>Tip$) THEN 7640REM IF (TipID%=1) Tip$="after% = &"+STR$~(after%) 7650XS%=(LEN(Tip$)*16)+20:YS%=40 7660SYS"Wimp_GetPointerInfo",,block2% 7670REM Adjust Tooltip window state 7680!block2%=whandle_tooltip% 7690SYS"Wimp_GetWindowState",,block2% 7700X%=block2%!4 7710Y%=block2%!8 7720!block2%=whandle_tooltip% 7730block2%!4=X%:block2%!8=Y%:block2%!12=X%+XS%:block2%!16=Y%+YS% 7740block2%!20=0:block2%!24=0:REM Scroll offsets 7750block2%!28=-1 7760$(tooltipicon%+4)=Tip$+CHR$0:REM Icon text 7770REMSYS"Wimp_OpenWindow",,block2% 7780REM Update icon 7790!block2%=whandle_tooltip% 7800block2%!4=0 7810SYS"Wimp_GetIconState",,block2% 7820block2%!8=0:REM Don't change anything, 7830block2%!12=0:REM Just signal an update ... 7840SYS"Wimp_SetIconState",,block2% 7850ENDIF 7860ENDPROC 7870 7880DEFPROCOpenToolTip(TipID%) 7890LOCAL XOffset%, RandTipID% 7900IF (TipID%=ToolTip%) ENDPROC 7910IF (ToolTip%>0) PROCCloseToolTip 7920REM Create ToolTip Window 7930IF (TipID%=1) PROCGetDate:Tip$=StartDate$ 7940IF (TipID%=2) THEN 7950 Tip$="Click for more ..." 7960 RandTipID%=RND(RandTipMax%*2)-1 7970 IF (RandTipID% < RandTipMax%) THEN 7980 Tip$=Tip$+RandTip$(RandTipID%) 7990 ENDIF 8000ENDIF 8010IF (TipID%=3) Tip$="currentwindow% = "+STR$(currentwindow%) 8020REM IF (TipID%=1) Tip$="after% = &"+STR$~(after%) 8030XS%=(LEN(Tip$)*16)+20:YS%=40 8040SYS"Wimp_GetPointerInfo",,block% 8050REM Define screen position of tooltip 8060XOffset%=XS%/2 8070IF (XOffset%>32) XOffset%=32 8080X%=(!block%)-XOffset% 8090Y%=(block%!4)+24 8100PROCGetScreenSize 8110IF ((X%+XS%)>OS_MX%) X%=OS_MX%-XS% 8120IF (X%<0) X%=0 8130IF ((Y%+YS%)>OS_MY%) Y%=(block%!4)-(YS%+24) 8140REM IF ((Y%-YS%)<0) Y%=0 8150 8160REM Adjust Tooltip window state 8170!block%=whandle_tooltip% 8180SYS"Wimp_GetWindowState",,block% 8190!block%=whandle_tooltip% 8200block%!4=X%:block%!8=Y%:block%!12=X%+XS%:block%!16=Y%+YS% 8210block%!20=0:block%!24=0:REM Scroll offsets 8220block%!28=-1 8230$(tooltipicon%+4)=Tip$+CHR$0:REM Icon text 8240SYS"Wimp_OpenWindow",,block% 8250ToolTip%=TipID% 8260tooltip_timer%=TIME 8270ENDPROC 8280 8290DEFPROCCloseToolTip 8300IF (ToolTip%=0) ENDPROC 8310!block%=whandle_tooltip% 8320SYS"Wimp_GetWindowState",,block% 8330!block%=whandle_tooltip% 8340block%!8=-1024 8350block%!16=-1024 8360SYS"Wimp_OpenWindow",,block% 8370REMSYS"Wimp_CloseWindow",,block% 8380REM SYS"Wimp_DeleteWindow",,block% 8390ToolTip%=0 8400ENDPROC 8410 8420DEFPROCPersistCloseToolTip 8430IF (ToolTip%=0) ENDPROC 8440OldToolTip%=ToolTip% 8450REM!block%=whandle_tooltip% 8460REMSYS"Wimp_CloseWindow",,block% 8470!block%=whandle_tooltip% 8480SYS"Wimp_GetWindowState",,block% 8490!block%=whandle_tooltip% 8500block%!8=-1024 8510block%!16=-1024 8520SYS"Wimp_OpenWindow",,block% 8530REM SYS"Wimp_DeleteWindow",,block% 8540ToolTip%=0 8550ENDPROC 8560 8570REM *************************************************** 8580 8590DEFPROCinit_drag(icon%) 8600qf_timer=-1 8610SYS"Wimp_GetPointerInfo",,block% 8620ox%=block%!0 8630oy%=block%!4 8640block%!4=icon% 8650drag_icon%=icon% 8660block%!4=drag_type% 8670block%!8=ox%-32 8680block%!12=oy%-32 8690block%!16=ox%+32 8700block%!20=oy%+32 8710block%!24=&80000000 8720block%!28=&80000000 8730block%!32=&7FFFFFFF 8740block%!36=&7FFFFFFF 8750SYS"Wimp_DragBox",,block% 8760 8770REM Start a sprite drag .... 8780IF (icon%=add_window%) $dragspritename%="yes"+CHR$0 8790IF (icon%=subtract_window%) $dragspritename%="no"+CHR$0 8800!boundspritebox%=0 8810boundspritebox%!4=0 8820boundspritebox%!8=ox%+24 8830boundspritebox%!12=oy%+24 8840SYS"DragASprite_Start",2+8+64+128,1,dragspritename%,boundspritebox% 8850ENDPROC 8860 8870DEFPROCdragdrop 8880SYS"Wimp_GetPointerInfo",,block% 8890block%!20=block%!12 8900block%!24=block%!16 8910block%!28=!block% 8920block%!32=block%!4 8930block%!36=0 8940!block%=64:block%!12=0 8950block%!16=1:block%!40=&fff 8960$(block%+44) ="" 8970SYS"Wimp_SendMessage",18,block%,block%!20,block%!24 8980 8990REM Cancel a sprite drag ....... 9000SYS"DragASprite_Stop" 9010ENDPROC 9020 9030REM *************************************************** 9040 9050DEFFNstring(ptr%) 9060LOCAL a$ 9070WHILE ?ptr%<>0 AND LEN(a$)<254 9080a$+=CHR$(?ptr%):ptr%+=1 9090ENDWHILE 9100=a$ 9110 9120DEFFNget_line(filehandle%) 9130LOCAL a$,z% 9140z%=0 9150a$="" 9160REPEAT 9170IF (NOT(EOF#filehandle%)) THEN z%=BGET#filehandle% 9180IF z%>=32 a$+=CHR$(z%) 9190UNTIL z%<32 OR EOF#filehandle% 9200=a$+CHR$0 9210 9220DEFPROCput_line(filehandle%, A$) 9230LOCAL a$,z% 9240z%=1 9250FORz%=1TO LEN(A$) 9260a$=MID$(A$,z%,1) 9270IF (ASC(a$)>0) THEN BPUT#filehandle%, ASC(a$) 9280NEXT 9290BPUT#filehandle%, 10 9300ENDPROC 9310 9320REM *************************************************** 9330 9340DEFPROCloadcache 9350cache_ext%=0 9360!cache%=0 9370REM Load in commands to open filer display 9380F%=OPENIN(StartPath$+".Users."+User$+".~~open"+CHR$0) 9390REPEAT 9400A$=FNget_line(F%) 9410IF A$<>"" THEN PROCadd_to_cache(A$, open_type%) 9420UNTIL EOF#F% 9430CLOSE#F% 9440REM Load in commands to close filer display 9450F%=OPENIN(StartPath$+".Users."+User$+".~~close"+CHR$0) 9460REPEAT 9470A$=FNget_line(F%) 9480IF A$<>"" THEN PROCadd_to_cache(A$, close_type%) 9490UNTIL EOF#F% 9500CLOSE#F% 9510ENDPROC 9520 9530DEFPROCadd_to_cache(com$, type%) 9540record_size%=LEN(com$)+1+2 9550IF (record_size%>255) THEN PROCerror("Path too big! Please shrink !Start and reorganise your (lengthy labeled) directory structure.") 9560?(cache%+cache_ext%)=record_size% 9570?(cache%+cache_ext%+1)=type% 9580FORX%=1 TO LEN(com$) 9590?(cache%+cache_ext%+1+X%)=ASC(MID$(com$,X%,1)) 9600NEXT 9610?(cache%+cache_ext%+1+X%)=0:REM Add terminating zero to string 9620cache_ext%+=record_size% 9630IF (cache_ext%>CACHE_SIZE%) THEN PROCerror("Too many windows! Please increase CACHE_SIZE% and rerun !Start.") 9640?(cache%+cache_ext%)=0:REM Initialise next record size to NULL 9650ENDPROC 9660 9670REM *************************************************** 9680 9690DEFPROCcache_open 9700cache_ptr%=0 9710REPEAT 9720r_size%=?(cache%+cache_ptr%) 9730type%=?(cache%+cache_ptr%+1) 9740IF (r_size%>0 AND type%=open_type%) THEN PROCexecute_string(cache%+cache_ptr%+2) 9750cache_ptr%+=r_size% 9760UNTILr_size%=0 9770 9780PROCOpenFSView 9790ENDPROC 9800 9810DEFPROCcache_close 9820cache_ptr%=0 9830REPEAT 9840r_size%=?(cache%+cache_ptr%) 9850type%=?(cache%+cache_ptr%+1) 9860IF (r_size%>0 AND type%=close_type%) THEN PROCexecute_string(cache%+cache_ptr%+2) 9870cache_ptr%+=r_size% 9880UNTILr_size%=0 9890 9900PROCCloseFSView 9910ENDPROC 9920 9930DEFPROCexecute_string(str_ptr%) 9940A$=FNstring(str_ptr%) 9950IF A$<>"" THEN OSCLI(A$) 9960ENDPROC 9970 9980REM *************************************************** 9990 10000DEFPROCreopenfiler 10010PROCcache_close 10020PROCcache_open 10030ENDPROC 10040 10050DEFPROCclosefiler 10060PROCcache_close 10070ENDPROC 10080 10090REM *************************************************** 10100 10110DEFPROCsavedesktop 10120DX%=OPENOUT(StartPath$+".tmpfile"+CHR$0) 10130dblock%!0=28 10140dblock%!4=task_handle% 10150dblock%!12=0 10160dblock%!16=10 10170dblock%!20=DX% 10180dblock%!24=0 10190SYS"Wimp_SendMessage",17,dblock%,0 10200ENDPROC 10210 10220REM ************************************************ 10230REM Get leaf name of a full path name 10240REM ************************************************ 10250DEFFNGetLeafName(ptr%) 10260LOCAL a$,leafptr%,size% 10270REM Determine size of zstring 10280size%=0 10290WHILE ?(ptr%+size%)>31 10300size%+=1 10310ENDWHILE 10320REM Determine offset of leafname 10330leafptr%=size% 10340WHILE (?(ptr%+leafptr%)<>ASC(".")) AND leafptr%>0 10350leafptr%-=1 10360ENDWHILE 10370leafptr%+=1 10380REM Build leafname 10390a$="" 10400WHILE leafptr%<size% 10410a$+=CHR$(?(ptr%+leafptr%)) 10420leafptr%+=1 10430ENDWHILE 10440=a$ 10450 10460REM ************************************************ 10470REM function to deal with incoming messages 10480REM ************************************************ 10490DEFPROCreceive(reason%) 10500message%=block%!16 10510REM PROCerror("Message : &"+STR$~(message%)+CHR$0) 10520CASE message% OF 10530WHEN 0:quit%=TRUE 10540WHEN 3:PROCdata_load_add_link:REM PROCerror("DataLoad:"+FNstring(block%+44)+" Leafname:"+FNGetLeafName(block%+44)+" Type:&"+STR$~(!(block%+40))+CHR$0) 10550WHEN 2:PROCdata_ack 10560WHEN 5:PROCdata_open 10570WHEN 10:PROCdesktop_ack 10580WHEN &400C0:PROCsubmenu_warning 10590WHEN &400C9:IconBarMenuOpen%=0 10600ENDCASE 10610ENDPROC 10620 10630REM User has double clicked on a fileicon 10640REM Response - store a link to this file in the ~ directory 10650DEFPROCdata_open 10660LOCAL type%, destinationdir$ 10670newlinkfile$=FNstring(block%+44) 10680newlinkleaf$=FNGetLeafName(block%+44) 10690type%=!(block%+40) 10700REM PROCerror("Type = "+STR$(type%)+CHR$0) 10710destinationdir$=StartPath$+".Users."+User$+".Links." 10720 10721REM Discard this link because we are already processing 10722REM a new one. A bit disastrous this but we don't have 10723REM support for threads in BASIC .... 10730IF (AutoaddLock%<>0) ENDPROC 10731 10740IF (type%=4096) THEN 10750REM Store this directory access 10760destinationdir$=destinationdir$+CHR$(SysFilePrefix%)+"Folders" 10770PROCautoaddnewshortcut(destinationdir$) 10780ENDIF 10790 10800IF (type%=8192) THEN 10810REM Store this application access 10820destinationdir$=destinationdir$+CHR$(SysFilePrefix%)+"Programs" 10830PROCautoaddnewshortcut(destinationdir$) 10840ENDIF 10850 10860IF (type%<4096) THEN 10870 IF (type%=DocumentType%) THEN 10880 destinationdir$=destinationdir$+CHR$(SysFilePrefix%)+"Document" 10890 PROCautoaddnewshortcut(destinationdir$) 10900 ENDIF 10910 10920 IF (type%=PictureType%) THEN 10930 destinationdir$=destinationdir$+CHR$(SysFilePrefix%)+"Picture" 10940 PROCautoaddnewshortcut(destinationdir$) 10950 ENDIF 10960 10970 IF (type%<>PictureType% AND type%<>DocumentType%) THEN 10980 destinationdir$=destinationdir$+CHR$(SysFilePrefix%)+"Files" 10990 PROCautoaddnewshortcut(destinationdir$) 11000 ENDIF 11010ENDIF 11020 11030ENDPROC 11040 11050DEFPROCautoaddnewshortcut(autodropdirectory$) 11060LOCAL number%, next%,numberofitems% 11070LOCAL oldestdate%,oldestname$,oldesttype%,oldestnext%,oldnext% 11080LOCAL delstring$ 11090AutoaddLock%=1 11100PROCensuredir(autodropdirectory$) 11110REM Auto insert directorys have a limit of 9 items 11120REM Is link directory empty? 11130numberofitems%=0 11140next%=0 11150oldestdate%=0 11160WHILE(next%<>-1 AND numberofitems%<=16) 11170$string%=autodropdirectory$+CHR$0 11180oldnext%=next% 11190SYS "OS_GBPB",11,string%,dblock%,1,next%,63,"*" TO ,,,number%,next% 11200IF next%<>-1 THEN 11210numberofitems%+=1 11220IF ((dblock%!24)<oldestdate% OR oldestdate%=0) oldestdate%=dblock%!24:oldestname$=FNstring(dblock%+29):oldestnext%=oldnext% 11230ENDIF 11240 11250REM Give a bit more control to user while updateing the 11260REM links directory. This may be a bad idea ... 11270PROCpoll 11280 11290ENDWHILE 11300IF (numberofitems%<9) THEN 11310 REM If so then automatically insert 11320 PROCaddnewshortcut(autodropdirectory$) 11330ELSE 11340 REM Intelligently delete an old file and 11350 REM Get filetype of this file 11360 $string%=autodropdirectory$+CHR$0 11370 SYS "OS_GBPB",12,string%,dblock%,1,oldestnext%,63,"*" 11380 oldesttype%=dblock%!20 11390 11400 REM PROCerror("Oldest file to remove : "+oldestname$+" of type "+STR$~(oldesttype%)+CHR$0) 11410 REM Delete the oldest link in this dir ... 11420 REM Final check - !Start can only remove a file if it's 11430 REM filetype is &af3 ... (Precaution against error) 11440 IF (oldesttype%=&af3) THEN 11450 delstring$="delete "+autodropdirectory$+"."+oldestname$ 11460 REM PROCerror("about to OSCLI "+delstring$+CHR$0) 11470 OSCLI(delstring$+CHR$0) 11480 REM insert a new one ... 11490 PROCaddnewshortcut(autodropdirectory$) 11500 ENDIF 11510ENDIF 11520AutoaddLock%=0 11530ENDPROC 11540 11550REM Prompt user to select directory for new link 11560DEFPROCdata_load_add_link 11570LOCAL path$,leaf$,type%,leafptr%,linkname$ 11580IF (FNCheckLinksDirExists=0) ENDPROC 11590path$=FNstring(block%+44) 11600leaf$=FNGetLeafName(block%+44) 11610type%=!(block%+40) 11620linkname$=StartPath$+".Users."+User$+".Links."+leaf$ 11630newlinkleaf$=leaf$ 11640newlinkfile$=FNstring(block%+44) 11650REM Is link directory empty? 11660$string%=StartPath$+".Users."+User$+".Links"+CHR$0 11670SYS "OS_GBPB",10,string%,dblock%,1,0,63,"*" TO ,,,number% 11680IF number%=0 THEN 11690REM If so then automatically add to root directory 11700PROCaddnewshortcut(StartPath$+".Users."+User$+".Links") 11710ELSE 11720PROCshowshortcutmenu(1) 11730ENDIF 11740ENDPROC 11750 11760REM Add new link to the shortcut directory 11770DEFPROCaddnewshortcut(dropdirectory$) 11780LOCAL linkname$,leafptr% 11790linkname$=dropdirectory$+"."+newlinkleaf$ 11800$string%=newlinkfile$+CHR$0 11810REMPROCerror("Contents of "+linkname$+" = "+newlinkfile$+CHR$0) 11820leafptr%=string% 11830REM Check to see if this file already exists and if so 11840REM prompt for overwrite. 11850X%=OPENOUT(linkname$+CHR$0) 11860WHILE((?leafptr%) > 31) 11870BPUT#X%, ?leafptr% 11880leafptr%+=1 11890ENDWHILE 11900BPUT#X%, 10:REM Output a terminating LF 11910CLOSE#X% 11920REM Set type appropriately 11930OSCLI("SetType "+linkname$+" af3"+CHR$0) 11940ENDPROC 11950 11960DEFPROCdata_ack 11970REM Store path in temp string 11980path$=FNstring(block%+44) 11990path$=LEFT$(path$) 12000dhandle%=block%!20 12010IF INSTR(path$,"<Wimp$ScrapDir>")>0 THEN 12020 REMIF (drag_icon%=add_window%) THEN 12030 PROCerror("You can't add that to the Filer window cache."+CHR$0) 12040 REMENDIF 12050 ENDPROC 12060ENDIF 12070REM Compile desktop boot file 12080SYS"Hourglass_On" 12090IF (drag_icon%=add_window%) THEN PROCsavedesktop 12100IF (drag_icon%=subtract_window%) THEN PROCsubtract_window 12110ENDPROC 12120 12130DEFPROCdesktop_ack 12140REM If we get a desktop_ack then that means that all 12150REM applications have responded to the request to write 12160REM to the desktop boot file. 12170IF (DX%<>0) THEN CLOSE#DX%:DX%=0 12180IF drag_icon%=add_window% THEN PROCadd_window 12190ENDPROC 12200 12210REM *************************************************** 12220 12230DEFPROCadd_window 12240REM Go through desktop bootfile looking for path string 12250REM If this line contains path_string then add relevant 12260REM line of boot file to config file. 12270newline$="" 12280X%=OPENIN(StartPath$+".tmpfile"+CHR$0) 12290REPEAT 12300A$=FNget_line(X%) 12310path_start%=INSTR(A$, path$) 12320path_length%=LEN(path$) 12330IF (INSTR(A$, "Filer_OpenDir")>0 AND path_start%>0 AND ASC(MID$(A$,path_start%+path_length%,1))<=32) THEN newline$=A$ 12340UNTIL EOF#X% 12350CLOSE#X% 12360REM No serious precautions needed here because of the 12370REM file name used ... tmpfile 12380OSCLI("Delete "+StartPath$+".tmpfile"+CHR$0) 12390 12400X%=OPENUP(StartPath$+".Users."+User$+".~~Open"+CHR$0) 12410PTR#X%=EXT#X% 12420PROCput_line(X%, newline$) 12430CLOSE#X% 12440 12450X%=OPENUP(StartPath$+".Users."+User$+".~~Close"+CHR$0) 12460PTR#X%=EXT#X% 12470PROCput_line(X%, "Filer_CloseDir "+path$) 12480CLOSE#X% 12490REM Re-initialise the Cache 12500PROCloadcache 12510SYS"Hourglass_Off" 12520ENDPROC 12530 12540REM *************************************************** 12550 12560DEFPROCsubtract_window 12570X%=OPENIN(StartPath$+".Users."+User$+".~~Open"+CHR$0) 12580Y%=OPENOUT(StartPath$+".Users."+User$+".tmpfile"+CHR$0) 12590REPEAT 12600A$=FNget_line(X%) 12610path_start%=INSTR(A$, path$) 12620path_length%=LEN(path$) 12630IF (INSTR(A$, "Filer_OpenDir")=0 OR path_start%=0 OR ASC(MID$(A$,path_start%+path_length%,1))>32) THEN PROCput_line(Y%, A$) 12640UNTIL EOF#X% 12650CLOSE#X% 12660CLOSE#Y% 12670OSCLI("Delete "+StartPath$+".Users."+User$+".~~Open"+CHR$0) 12680OSCLI("Rename "+StartPath$+".tmpfile "+StartPath$+".Users."+User$+".~~Open"+CHR$0) 12690 12700X%=OPENIN(StartPath$+".Users."+User$+".~~Close"+CHR$0) 12710Y%=OPENOUT(StartPath$+".tmpfile"+CHR$0) 12720REPEAT 12730A$=FNget_line(X%) 12740path_start%=INSTR(A$, path$) 12750path_length%=LEN(path$) 12760IF (INSTR(A$, "Filer_CloseDir")=0 OR path_start%=0 OR ASC(MID$(A$,path_start%+path_length%,1))>32) THEN PROCput_line(Y%, A$) 12770UNTIL EOF#X% 12780CLOSE#X% 12790CLOSE#Y% 12800OSCLI("Delete "+StartPath$+".Users."+User$+".~~Close"+CHR$0) 12810OSCLI("Rename "+StartPath$+".tmpfile "+StartPath$+".Users."+User$+".~~Close"+CHR$0) 12820REM Re-initialise the Cache 12830PROCloadcache 12840SYS"Hourglass_Off" 12850ENDPROC 12860 12870REM *************************************************** 12880REM *************************************************** 12890REM *************************************************** 12900REM *************************************************** 12910 12920DEFPROCinit 12930REM Do ~~Open and ~~Close files exist? If not, create empty 12940REM copies of them to prevent !Start crashing. 12950PROCensuredir(StartPath$+".Users") 12960PROCensuredir(StartPath$+".Users.Admin") 12970PROCensuredir(StartPath$+".Users.Admin.Links") 12980 12990$string%=StartPath$+".Users."+User$+".~~Open" 13000SYS"OS_File",17,string% TO result% 13010IF (result%=0) THEN X%=OPENOUT(StartPath$+".Users."+User$+".~~Open"):CLOSE#X% 13020$string%=StartPath$+".Users."+User$+".~~Close" 13030SYS"OS_File",17,string% TO result% 13040IF (result%=0) THEN X%=OPENOUT(StartPath$+".Users."+User$+".~~Close"):CLOSE#X% 13050 13060SYS "Wimp_Initialise",200,&4B534154,app$ TO current_wimp_version%,task_handle% 13070 13080SYS"Wimp_OpenTemplate",,StartPath$+".Templates" 13090$string%="Info" 13100SYS"Wimp_LoadTemplate",,block%,infodata%,infodata%+2048,-1,string%,0 13110SYS"Wimp_CreateWindow",,block% TO whandle_info% 13120SYS"Wimp_CloseTemplate" 13130 13140RESTORE 13270 13150PROCsetupmenu(main_menu%) 13160 13170REM Install an icon on the icon bar using the shortcut icon 13180iconbarhandle%=FNcreate_icon(-2,0,-16,84,106,&1700310B,"!start",iconbarlabel%,iconbardata%,32) 13190 13200ENDPROC 13210 13220REM *************************************************** 13230REM *************************************************** 13240REM *************************************************** 13250REM *************************************************** 13260 13270DATA "Start",5 13280DATA 0,whandle_info%,"Info" 13290DATA 0,-1,"Clean Desk" 13300DATA 0,-1,"NoHourglass" 13310DATA 0,-1,"Edit Links" 13320DATA &80,-1,"Quit" 13330 13340REM ********************************************************* 13350 13360REM function to inform the wimp of the presence of an icon 13370DEFFNcreate_icon(whan%,ix%,iy%,iw%,ih%,flag%,text$,ptr1%,ptr2%,ptr3%) 13380!block%=whan% 13390block%!4=ix% 13400block%!8=iy% 13410block%!12=ix%+iw% 13420block%!16=iy%+ih% 13430block%!20=flag% 13440IF ptr1%=0 THEN 13450$(block%+24)=text$ 13460ELSE 13470block%!24=ptr1% 13480block%!28=ptr2% 13490block%!32=ptr3% 13500ENDIF 13510SYS"Wimp_CreateIcon",,block% TO ihandle% 13520=ihandle% 13530 13540REM ******************************************************** 13550 13560REM General mouse click handling routine. 13570REM Note to people who don't really have a clue about WIMP system: 13580REM All clickings on menus will never reach this procedure, 13590REM it deals with all clicks on windows and the iconbar. 13600DEFPROCclick(win%) 13610CASE win% OF 13620WHEN -2:PROCclick_iconbar(block%!8) 13630WHEN whandle_info%:PROCclick_info(block%!8) 13640ENDCASE 13650ENDPROC 13660 13670DEFPROCclick_iconbar(button%) 13680CASE button% OF 13690WHEN 0:PROCmove_overiconbar 13700WHEN 1:PROCclick_iconbaradjust 13710WHEN 2:PROCclick_iconbarmenu 13720WHEN 4:PROCclick_iconbarselect 13730ENDCASE 13740ENDPROC 13750 13760DEFPROCmove_overiconbar 13770IF IconBarMenuOpen%=1 iconbar_timerflag%=0 13780REM Is pointer over iconbar icon? If so inc iconbar_timer 13790IF (iconbar_timerflag%=0 AND IconBarMenuOpen%<>1) iconbar_timerflag%=1:iconbar_timer%=TIME 13800IF (((TIME-iconbar_timer%)>25) AND iconbar_timerflag%=1 AND OldToolTip%<>1) PROCOpenToolTip(1):iconbar_timerflag%=2 13810IF (((TIME-iconbar_timer%)>400) AND ToolTip%>0) PROCPersistCloseToolTip:iconbar_timerflag%=0 13820ENDPROC 13830 13840DEFPROCclick_iconbargeneral 13850IF ToolTip%=1 PROCPersistCloseToolTip 13860SYS"Wimp_GetPointerInfo",,block% 13870override_tooltip%=1 13880IconBarMenuOpen%=1:REM Inhibit tool tip display over menu 13890IF (INKEY-1) THEN 13900PROCshowmenu(main_menu%,!block%-64, 96+(5*44)) 13910ELSE 13920PROCshowshortcutmenu(0) 13930ENDIF 13940ENDPROC 13950 13960DEFPROCclick_iconbarmenu 13970PROCclick_iconbargeneral 13980ENDPROC 13990 14000DEFPROCclick_iconbarselect 14010IF (INKEY-1) AND (INKEY-2) THEN 14020REM Open cache windows 14030PROCreopenfiler 14040ENDPROC 14050ENDIF 14060 14070IF (INKEY-2) THEN 14080REM Start drag to add a window 14090SYS"Wimp_GetPointerInfo",,block% 14100IF (block%!8) PROCinit_drag(add_window%) 14110ELSE 14120REM Click menu 14130PROCclick_iconbargeneral 14140ENDIF 14150ENDPROC 14160 14170DEFPROCclick_iconbaradjust 14180IF (INKEY-1) AND (INKEY-2) THEN 14190REM Close cache windows 14200PROCclosefiler:PROCCloseInfoBox 14210ENDPROC 14220ENDIF 14230IF (INKEY-2) THEN 14240SYS"Wimp_GetPointerInfo",,block% 14250REM Start drag to remove a window 14260IF (block%!8) PROCinit_drag(subtract_window%) 14270ELSE 14280PROCclick_iconbargeneral 14290ENDIF 14300ENDPROC 14310 14320DEFFNCheckLinksDirExists 14330LOCAL dir$,result% 14340dir$=StartPath$+".Users."+User$+".Links" 14350REM Does the Links directory exist? 14360$string%=dir$+CHR$0 14370SYS"OS_File",17,string% TO result% 14380REM If not, create one. 14390IF (result%=0) THEN OSCLI("CDIR "+dir$+CHR$0) 14400SYS"OS_File",17,string% TO result% 14410REM Has it created it? If not, error. 14420IF (result%=0) THEN 14430PROCerror("Fatal : Couldn't create "+dir$+CHR$0) 14440=0 14450ENDIF 14460=1 14470 14480DEFPROCensuredir(edir$) 14490LOCAL result% 14500REM Does the directory exist? 14510$string%=edir$+CHR$0 14520SYS"OS_File",17,string% TO result% 14530REM If not, create one. 14540IF (result%=0) THEN OSCLI("CDIR "+edir$+CHR$0) 14550SYS"OS_File",17,string% TO result% 14560REM Has it created it? If not, error. 14570IF (result%=0) THEN 14580PROCerror("Fatal : Couldn't create "+edir$+CHR$0) 14590REM =0 14600ENDIF 14610REM=1 14620ENDPROC 14630 14640REM ************************************************** 14650REM Start building the shortcutmenu 14660REM ************************************************** 14670DEFPROCshowshortcutmenu(arg%) 14680IF (ToolTip%=1) PROCPersistCloseToolTip 14690addlink%=arg% 14700IF (FNCheckLinksDirExists=0) ENDPROC 14710dirptr%(0)=shortcutmenu% 14720REM linkmenudepth%=0:REM At top level 14730 14740PROCSingleDirectoryRead(StartPath$+".Users."+User$+".Links", "Start", 0) 14750initialmenusize%=dirlist%(0) 14760IF initialmenusize%=0 initialmenusize%=1 14770SYS"Wimp_GetPointerInfo",,block% 14780PROCshowmenu(shortcutmenu%,!block%-64, 96+((initialmenusize%)*44)) 14790ENDPROC 14800 14810 14820 14830REM ***************************************************** 14840REM Read contents of a directory into the menu data areas 14850REM ***************************************************** 14860DEFPROCSingleDirectoryRead(localdir$,dirfilename$,linkdepth%) 14870LOCAL oldlocaldir$,olddirfilename$,oldlinkdepth%, olddirptr% 14880LOCAL dirsize%, DirScan% 14890LOCAL dir$,next%,type%,item$,currentdir%,ptr% 14900LOCAL currentmenuptr%, locali%, width%,title$ 14910LOCAL TitlePtr%, MenuExtent% 14920LOCAL filetype%, filetypeinfo%,linktype%,objecttype%,linktypeinfo% 14930LOCAL ValidLoadFlag% 14940LOCAL CurrentLinkDepth% 14950LOCAL NumberOfLinks% 14960 14970CurrentLinkDepth%=linkdepth% 14980oldlocaldir$ = localdir$ 14990olddirfilename$ = dirfilename$ 15000oldlinkdepth% = linkdepth% 15010olddirptr%=dirptr%(oldlinkdepth%) 15020DirScan%=FALSE 15030 15040REPEAT:REM Repeat until loaded in directory with no errors 15050localdir$ = oldlocaldir$ 15060dirfilename$ = olddirfilename$ 15070linkdepth% = oldlinkdepth% 15080dirptr%(oldlinkdepth%)=olddirptr% 15090DirScan%=TRUE 15100 15110REM Calculate pointer to shortcutmenu% & index into 15120REM shortcutmenudata% 15130dir$=localdir$ 15140a%=0 15150currentmenuptr%=shortcutmenu% 15160i%=0 15170WHILE a%<linkdepth% 15180currentmenuptr%+=(28+(dirlist%(a%)*24)) 15190i%+=dirlist%(a%) 15200a%+=1 15210ENDWHILE 15220 15230REM Initialise start menu user/system seperator to be null 15240IF (linkdepth%=0) StartMenuSeperator%=-1 15250 15260REMPROCerror("MenuPtr = "+STR$~(currentmenuptr%)+CHR$0) 15270next%=0 15280numberofitems%=0 15290 15300REM Get number of items in current directory localdir$ 15310WHILE (next%<>-1) 15320$string%=dir$+CHR$0 15330SYS "OS_GBPB",10,string%,dblock%,1,next%,63,"*" TO ,,,number%,next% 15340IF next%<>-1 numberofitems%+=1 15350ENDWHILE 15360 15370 15380REMPROCerror("Directory size = "+STR$(numberofitems%)+CHR$0) 15390 15400dirlist%(linkdepth%)=numberofitems% 15410nextmenuptr%=currentmenuptr%+(28+(numberofitems%*24)) 15420dirptr%(linkdepth%+1)=nextmenuptr% 15430 15440locali%=i% 15450REM Build titleless menu 15460REM title$="Menu "+STR$(currentdir%)+CHR$0 15470IF (linkdepth%=1 AND LEFT$(dirfilename$,1)=CHR$(SysFilePrefix%)) THEN 15480 title$=RIGHT$(dirfilename$,LEN(dirfilename$)-1)+CHR$0 15490 ELSE 15500 title$=dirfilename$+CHR$0 15510ENDIF 15520 15530TitlePtr%=currentmenuptr% 15540$TitlePtr%=title$ 15550width%=(LEN(title$)-2)*16 15560currentmenuptr%!12 = &00070207 15570currentmenuptr%!20=44 15580currentmenuptr%!24=0 15590ptr%=currentmenuptr%+28 15600 15610next%=0 15620 15630NumberOfLinks%=numberofitems% 15640 15650WHILE (next%<NumberOfLinks% AND DirScan%=TRUE) 15660ValidLoadFlag%=TRUE 15670SYS "OS_GBPB",10,dir$,dblock%,1,next%,63,"*" 15680next%+=1 15690locali%=i% 15700REM Get Object type (2 = directory, 1 = file) 15710type% = dblock%?&10 15720REM Get name of this object 15730item$=FNgetname(dblock%+&14) 15740REM Get file attributes 15750filetypeinfo%= !dblock% >>> 20 15760filetype%=(!dblock% >> 8)AND &FFF 15770 15780REM Initialise menu object 15790!ptr%=8:REM mflags = &80 means last menu item 15800ptr%!4=-1:REM pointer to sub menu 15810REM Store this filer object, whatever it is 15820!(shortcutmenudata%+(locali%*64)+32+28) = type% 15830REM Is this object a directory? 15840IF (type% =2) THEN 15850 REM If so, then add to directory list 15860 $(shortcutmenudata%+(locali%*64)+32) = ""+CHR$0 15870 ptr%!4 = nextmenuptr%:REM Pointer to submenu 15880 ELSE 15890 REM This is a link and not a directory 15900 REM PROCerror("Processing "+item$+CHR$0) 15910 REM Get filetype of link object 15920 $string%=FNGetLinkContents(dir$+"."+item$)+CHR$0 15930 15940 IF (FNCheckValidDrive(FNstring(string%)) =1) THEN 15950 SYS "OS_File",17,string% TO objecttype%,,linkloadaddr% 15960 linktype%=(linkloadaddr%>>8) AND &FFF 15970 linktypeinfo%= linkloadaddr% >>> 20 15980 ELSE 15990 objecttype%=0 16000 ENDIF 16010 REMPROCerror(FNGetLinkContents(dir$+"."+item$)+" is a "+STR$(linktypeinfo%)+CHR$0) 16020 IF (objecttype%=0) THEN 16030 REM PROCerror("Error : Link("+FNGetLinkContents(dir$+"."+item$)+") not found."+CHR$0) 16040 REM Delete this link and rescan the directory 16050 REM Safety first - ensure this file is actually a link in 16060 REM case the <Start$Dir> system variable has become corrupt (!) 16070 IF (filetype%=&af3) THEN 16080 REM PROCerror("Invalid link "+dir$+"."+item$+" has been found and will be deleted when you click OK."+CHR$0) 16090 OSCLI("delete "+dir$+"."+item$+CHR$0) 16100 DirScan%=FALSE 16110 ValidLoadFlag%=FALSE 16120 ELSE 16130 PROCerror("Error: Another program has altered the <Start$Dir> system variable or someone has placed a non-link "+dir$+"."+item$+" into the links directory. Rerun the !Start application or remove the offending file from the !Start.Links directory."+CHR$0) 16140 ENDIF 16150 16160 ENDIF 16170 16180 REM $(shortcutmenudata%+(locali%*64)+32) = "Ssmall_dir"+CHR$0 16190 16200 IF (objecttype%=1) THEN 16210 REM This link is a pointer to a file 16220 REM PROCerror(FNstring(string%)+" is a file"+CHR$0) 16230 $(shortcutmenudata%+(locali%*64)+32) = "Ssmall_"+STR$~(linktype%)+CHR$0 16240 ENDIF 16250 16260 REM For some wierd reason the following two variables must 16270 REM be evaluated outside of the objecttype test. I think 16280 REM it must be something to do with the pipeline and/or a 16290 REM bug in the BASIC rom. 16300 shriek%=ASC("!") 16310 namestart%=ASC(LEFT$(item$,1)) 16320 REM PROCerror(STR$(namestart%-shriek%)+CHR$0) 16330 IF (objecttype%=2) THEN 16340 REM This link is a pointer to an application or directory 16350 REM PROCerror(FirstChar$+CHR$0) 16360 IF (namestart%<>shriek%) THEN 16370 REM !ptr%=(!ptr%)+4 16380 $(shortcutmenudata%+(locali%*64)+32) = "Ssmall_dir"+CHR$0 16390 ELSE 16400 $(shortcutmenudata%+(locali%*64)+32) = "Ssm"+item$+CHR$0 16410 ENDIF 16420 ENDIF 16430 16440ENDIF 16450 16460REM Build rest of menu item attributes 16470ptr%!8=&7000313:REM icon type 16480REM IF (type%=2 AND objecttype%=0) ptr%!8=&7400313:REM Invalid line 16490IF (addlink%=1) ptr%!8=&3000313 16500$(shortcutmenudata%+(locali%*64))=item$+CHR$0 16510ptr%!12 = shortcutmenudata%+(locali%*64) 16520ptr%!16 = shortcutmenudata%+(locali%*64)+32 16530ptr%!20 = 28:REM menu item string buffer = 28 bytes 16540 16550IF (linkdepth%=0) THEN 16560IF (MID$(item$,1,1)=CHR$(SysFilePrefix%) AND StartMenuSeperator%<0) THEN 16570REM PROCerror("Name = "+FNstring(shortcutmenudata%+(locali%*64))+CHR$0) 16580StartMenuSeperator%=locali% 16590REM Does this item need a dotted line above it? 16600IF (locali%>0) !(ptr%-24)=(!(ptr%-24)) + 2 16610ENDIF 16620IF (locali%>=StartMenuSeperator% AND StartMenuSeperator%>=0) $(shortcutmenudata%+(locali%*64))=RIGHT$(item$,LEN(item$)-1)+CHR$0 16630ENDIF 16640 16650 16660a%=(LEN(item$)+4)*16 16670IF a%>width% width%=a% 16680ptr%+=24 16690i%+=1 16700ENDWHILE 16710 16720REM Has this list got anything in it? 16730IF (dirlist%(linkdepth%)>0) THEN 16740!(ptr%-24)=&88:REM Set last menu item 16750ELSE 16760width%=(LEN(title$)-2)*16 16770REM Make default first entry be greyed out label 'empty' 16780item$="Empty"+CHR$0 16790$(shortcutmenudata%+(locali%*64)+32) = ""+CHR$0 16800!ptr%=&88:REM mflags = &80 means last menu item 8=IssueWarn 16810ptr%!4=-1:REM pointer to sub menu 16820IF (addlink%=1) THEN 16830ptr%!8=&3000313:REM greyed out SELECTABLE icon type (Add link) 16840ELSE 16850ptr%!8=&2400B33:REM greyed out UNSELECTABLE icon type 16860ENDIF 16870$(shortcutmenudata%+(locali%*64))=item$ 16880$(ptr%+12)=item$ 16890ptr%!12 = shortcutmenudata%+(locali%*64) 16900ptr%!16 = shortcutmenudata%+(locali%*64)+32 16910ptr%!20 = 28:REM menu item string buffer = 28 bytes 16920a%=(LEN(item$)+4)*16 16930IF a%>width% width%=a% 16940i%+=1 16950ENDIF 16960REM Does this menu fit on the screen ? 16970REMMenuExtent% = MenuX%+(width% * MenuDirection%) 16980REMIF (MenuExtent%>OS_MX% OR MenuExtent%<0) THEN 16990REM title$="\"+title$ 17000REM $TitlePtr% = title$ 17010REM MenuDirection%=MenuDirection%*-1 17020REM REM Adjust width 17030REM IF ((LEN(title$)-2)*16) > width%) THEN 17040REM width%=(LEN(title$)-2)*16 17050REM ENDIF 17060REMENDIF 17070currentmenuptr%!16=width% 17080 17090REM ENDPROC 17100 17110REM End of directory scanning 17120UNTIL DirScan%=TRUE 17130dirlist%(linkdepth%)=numberofitems% 17140 17150IF (dirlist%(linkdepth%)=0) dirlist%(linkdepth%)=1 17160ENDPROC 17170 17180REM ************************************************* 17190REM A Submenu is about to open 17200REM ************************************************* 17210DEFPROCsubmenu_warning 17220LOCAL ptr%,localdir$,depth%,index%,selection%,leaf$,i% 17230localdir$=StartPath$+".Users."+User$+".Links" 17240REM Navigate menu index data to determine where we are 17250depth%=0 17260index%=0 17270ptr%=block%+32 17280WHILE !((block%+32)+(depth%*4)) <> -1 17290selection%=!((block%+32)+(depth%*4)) 17300leaf$=FNstring(shortcutmenudata%+((index%+selection%)*64)) 17310REM Is this a system directory name? 17320i%=selection% 17330IF (depth%=0 AND i%>=StartMenuSeperator% AND StartMenuSeperator%>=0) THEN 17340leaf$=CHR$(SysFilePrefix%)+leaf$ 17350ENDIF 17360localdir$=localdir$+"."+leaf$ 17370index%+=dirlist%(depth%) 17380depth%+=1 17390ENDWHILE 17400PROCSingleDirectoryRead(localdir$,leaf$,depth%) 17410SYS"Wimp_CreateSubMenu",,block%!20,block%!24,block%!28 17420ENDPROC 17430 17440REM ***************************************************** 17450REM Recursive Directory boot 17460REM ***************************************************** 17470DEFPROCDirectoryBoot(localdir$) 17480LOCAL dir$, next%,type%, item$, objectcount%, currentdir% 17490LOCAL number%,LD% 17500LOCAL linktype%,linkdir$ 17510dir$=localdir$ 17520next%=0 17530REMSYS"Hourglass_On" 17540WHILE next%<>-1 17550 17560PROCpoll 17570PROCpoll 17580 17590SYS "OS_GBPB",10,dir$,bootblock%,1,next%,63,"*" TO ,,,number%,next% 17600REM Get Object type (2 = directory, 1 = file) 17610type% = bootblock%?&10 17620REM Get name of this object 17630item$=FNgetname(bootblock%+&14) 17640REM Has this directory got anything in it? 17650IF (next%<>-1) THEN 17660 REM Is this a directory (ie type=2) 17670 IF (type%=2) THEN 17680 PROCDirectoryBoot(dir$+"."+item$) 17690 ELSE 17700 REM Must be a link to a file or application 17710 REM What type of thing does this link point to? 17720 REM PROCerror("Opening "+dir$+CHR$0) 17730 LD%=OPENIN(dir$+"."+item$+CHR$0) 17740 linkdir$="" 17750 REPEAT 17760 LD$=CHR$(BGET#LD%) 17770 IF (ASC(LD$)>31) linkdir$+=LD$ 17780 UNTIL ASC(LD$)<32 OR EOF#LD% 17790 CLOSE#LD% 17800 REM What type is the linkdir? 17810 $bootstring%=linkdir$+CHR$0 17820 IF (FNCheckValidDrive(linkdir$) =1) THEN 17830 SYS "XOS_File",5,bootstring% TO linktype% 17840 IF (LEFT$(item$,1)="!" OR linktype%<>2) THEN 17850 REM Must be either a file or app or dir so let's boot it 17860 REM If directory, only boot if begin with a ! (Save time) 17870 $clistring = "Filer_Boot "+linkdir$+CHR$0 17880 SYS "XOS_CLI", clistring 17890 ENDIF 17900 ENDIF 17910 ENDIF 17920ENDIF 17930ENDWHILE 17940REMSYS"Hourglass_Off" 17950ENDPROC 17960 17970DEFFNCheckValidDrive(isvpath$) 17980LOCAL fs_drive$, pptr%, char$, a% 17990REM Check that isvpath$ resides on a valid file system 18000REM and a valid drive. 18010REM If not then return 0 else return 1 18020pptr%=1 18030fs_drive$="" 18040REPEAT 18050char$=MID$(isvpath$,pptr%,1) 18060IF (char$<>".") fs_drive$=fs_drive$+char$ 18070pptr%=pptr%+1 18080UNTIL (pptr%>LEN(isvpath$) OR char$=".") 18090REM Check fs_drive$ with all currently invalid devices 18100a%=0 18110WHILE(a%<InvalidDriveCount%) 18120IF (fs_drive$=InvalidDrive$(a%)) a%=InvalidDriveCount%+1 18130a%+=1 18140ENDWHILE 18150REM return if it matches an invalid drive 18160IF (a%>InvalidDriveCount%) THEN =0 18170REM Is this device valid? 18180$clistring=fs_drive$+CHR$0 18190SYS"XOS_File",5,clistring TO result% 18200IF (result%<=8192) THEN 18210 REM This is a valid drive 18220 =1 18230ENDIF 18240REM Update list of invalid drives 18250InvalidDrive$(InvalidDriveCount%) = fs_drive$ 18260InvalidDriveCount%+=1 18270=0 18280 18290DEFFNGetLinkContents(glinkfilename$) 18300LOCAL linkdir$,LD% 18310 LD%=OPENIN(glinkfilename$+CHR$0) 18320 linkdir$="" 18330 REPEAT 18340 LD$=CHR$(BGET#LD%) 18350 IF (ASC(LD$)>31) linkdir$+=LD$ 18360 UNTIL ASC(LD$)<32 OR EOF#LD% 18370 CLOSE#LD% 18380 =linkdir$ 18390 18400 18410REM Extract the wstring stored at addr%. 18420DEF FNgetname(addr%) 18430LOCAL b$ 18440WHILE ?addr%>31 18450b$+=CHR$(?addr%) 18460addr%+=1 18470ENDWHILE 18480=b$ 18490 18500REM ************************************** 18510REM Click on shortcut menu list 18520REM ************************************** 18530DEFPROCshortcutmenuselect 18540LOCAL currentmenuptr%,dir$,linkdir$,dropdir$,currentdropdir$,leaf$ 18550LOCAL ReOpenFlag% 18560LOCAL IconFlagsAddr% 18570 18580ReOpenFlag%=FALSE 18590dir$=StartPath$+".Users."+User$+".Links" 18600dropdir$=dir$ 18610currentdropdir$=dir$ 18620currentmenuptr%=shortcutmenu% 18630globalmenuptr%=shortcutmenu% 18640REM block%+00 is selection number of menu, 18650nestlevel%=0 18660sel1%=block%!nestlevel% 18670 18680REM Recurse menu directory pointers until leaf node found 18690REPEAT 18700selection%=block%!(nestlevel%*4) 18710nextselection%=block%!((nestlevel%+1)*4) 18720REMPROCerror("Menu Selection = "+STR$(selection%)+CHR$0) 18730REM Get pointer to icon definition from menu definition 18740submenuptr%=!(currentmenuptr%+28+(selection%*24)+4) 18750dataptr%=!(currentmenuptr%+28+(selection%*24)+12) 18760leaf$=FNstring(dataptr%) 18770REM Is this a system file name? 18780 18790IF (selection%>=StartMenuSeperator% AND StartMenuSeperator%>=0 AND nestlevel%=0) leaf$=CHR$(SysFilePrefix%)+leaf$ 18800 18810currentdropdir$=dropdir$ 18820IF (selection%<>-1) THEN 18830 dir$=dir$+"."+leaf$ 18840 REM Is this menu entry a pointer to a submenu? 18850 IF (submenuptr%<>-1) THEN 18860 dropdir$=dropdir$+"."+leaf$ 18870 currentmenuptr%=submenuptr% 18880 nestlevel%+=1 18890 ENDIF 18900ENDIF 18910UNTIL nextselection%=-1 18920 18930IF (addlink%=1) THEN 18940REM PROCerror("Adding shortcut["+newlinkleaf$+"] into "+dropdir$+CHR$0) 18950PROCaddnewshortcut(currentdropdir$) 18960ELSE 18970 REM Is this a valid object? 18980 IF (submenuptr%=-1) THEN 18990 REM Is the ALT key pressed? 19000 REM If so delete this link 19010 IF (INKEY-3) THEN 19020 OSCLI("delete "+dir$+CHR$0) 19030 REM Alter menu structure 19040 IconFlagsAddr%=currentmenuptr%+28+8+(selection%*24) 19050 !IconFlagsAddr% = (!IconFlagsAddr%)+(2^22):REM Grey out sprite 19060 !IconFlagsAddr% = !IconFlagsAddr% AND &ffffff:REM Grey out 19070 !IconFlagsAddr% = !IconFlagsAddr%+&1000000:REM text 19080 ELSE 19090 REM Get the desktop filer to run this link 19100 dir$="Filer_Run "+FNGetLinkContents(dir$) 19110 REM PROCerror("OSCLI "+dir$+CHR$0) 19120 OSCLI(dir$+CHR$0) 19130 ENDIF 19140 ENDIF 19150 REM Check if ADJUST pressed in which case, reprint menus. 19160 SYS"Wimp_GetPointerInfo",,block2% 19170 button%=block2%!8 19180IF button%=1 ReOpenFlag%=TRUE 19190 19200IF (ReOpenFlag%) THEN 19210 PROCshowmenu(shortcutmenu%,0,0) 19220 ELSE 19230 IconBarMenuOpen%=0:REM Reenable icon bar tooltip 19240ENDIF 19250ENDIF 19260ENDPROC 19270 19280DEFPROCclick_info(button%) 19290CASE button% OF 19300WHEN 2:PROCshowmenu(main_menu%,!block%-64, (block%!4)+32) 19310ENDCASE 19320ENDPROC 19330 19340DEFPROCmenuselect 19350LOCAL Skronky% 19360Skronky%=currentmenu% 19370CASE Skronky% OF 19380WHEN main_menu%:PROCmainmenuselect 19390WHEN shortcutmenu%:PROCshortcutmenuselect 19400ENDCASE 19410ENDPROC 19420 19430DEFPROCmainmenuselect 19440REM block%+00 is selection number of first menu, 19450REM block%+04 is selection number of second level etc. 19460sel1%=!block%:sel2%=block%!4 19470SYS"Wimp_GetPointerInfo",,block% 19480button%=block%!8 19490CASE sel1% OF 19500WHEN 0:PROCOpenInfoBox 19510WHEN 1:PROCclear 19520WHEN 2:PROCsmash 19530WHEN 3:PROCOpenLinks 19540WHEN 4:quit%=TRUE 19550ENDCASE 19560REM Check if ADJUST pressed in which case, reprint menus. 19570IF button%=1 THEN 19580PROCshowmenu(main_menu%,0,0) 19590ELSE 19600IconBarMenuOpen%=0:REM Reenable icon bar tooltip 19610ENDIF 19620ENDPROC 19630 19640DEFPROCOpenLinks 19650OSCLI("Filer_Opendir "+StartPath$+".Users."+User$+".Links"+CHR$0) 19660ENDPROC 19670 19680DEFPROCshowmenu(menu%,mx%,my%) 19690currentmenu%=menu% 19700SYS"Wimp_CreateMenu",,menu%,mx%,my% TO currentmenuhandle% 19710ENDPROC 19720 19730REM *************************************************** 19740 19750DEFPROCclear 19760X%=OPENOUT(StartPath$+".Users."+User$+".~~Open"):CLOSE#X% 19770X%=OPENOUT(StartPath$+".Users."+User$+".~~Close"):CLOSE#X% 19780PROCloadcache 19790ENDPROC 19800 19810REM ******************************************************* 19820 19830DEFPROCsmash 19840OSCLI("Close") 19850SYS"Hourglass_Smash" 19860ENDPROC 19870 19880REM ******************************************************* 19890 19900REM Tell WIMP to initialise a new menu. 19910REM This should really be done by loading in a MENU template. 19920DEFPROCsetupmenu(menu%) 19930READ title$,num%:$menu%=title$ 19940width%=(LEN(title$)-2)*16 19950menu%!12=&00070207:menu%!20=44:menu%!24=0 19960ptr%=menu%+28:FOR i%=1TOnum% 19970READ mflags%,subptr%,item$ 19980!ptr%=mflags%:ptr%!4=subptr% 19990ptr%!8=&7000021:$(ptr%+12)=item$ 20000a%=(LEN(item$)+1)*16 20010IF a%>width% width%=a% 20020ptr%+=24:NEXT 20030menu%!16=width% 20040ENDPROC 20050 20060REM ***************************************************** 20070 20080REM function to deal with errors 20090DEFPROCerror(err$) 20100!errorblock%=255 20110$(errorblock%+4)=err$+CHR$0 20120SYS "Wimp_ReportError",errorblock%,1,app$ 20130ENDPROC 20140 20150REM ***************************************************** 20160DEFPROCOpenFSView 20170 20180ENDPROC 20190REM ***************************************************** 20200DEFPROCCloseFSView 20210 20220ENDPROC 20230REM *****************************************************
5� *********************************************** � Name : Start � Version : 4.00 (2� Purpose : Make RiscOS Desktop more efficient 2� Author : Barny Short <'� Date : Thu 12th September 1996 F5� *********************************************** P� Revision history : Z4� 24-Aug-1997 Added Quickfile Icon to iconbar. d1� Clicking on icon open/closes. n-� 25-Aug-1997 Added ShortCuts facility. x2� Similar feature to Win95 tool. �6� 04-Sep-1997 Added nested directories facility. �0� Changed Shift+IconbarMenu to �/� include EditLinks facility. �5� Changed name to Start and changed �0� shortcuts directory to Links �/� 05-Sep-1997 Changed way window cache is �5� administered. Became version 2.00 �1� 06-Sep-1997 Changed format of link files. �2� Added entire boot at start up. �0� 07-Sep-1997 Fixed a mother of a bug that �5� probably has something to do with �1� the pipeline. Also added much �.� more intelligent file type � checking. 2� 14-Sep-1997 General improvements regarding ,� drag'n'drop and tooltip. ")� 04-Nov-1997 Changed icon bar icon ,1� 05-Nov-1997 Added the ~ history directory 61� to catch all double clicks on @� file icons. J4� Also added a ~~ directory. Can't T#� think what for. ^2� Fixed the EMPTY directory bug. h3� Changed action of TOOL_TIP when r3� pointer moved over it so now it |)� gets 'pushed' around. �5� 06-Nov-1997 Changed how destination directory �4� is selected for ADDNEWLINK. User �5� now has to explicitly move to the �"� required menu. �2� Created system directorys that �4� begin with a ~ symbol. These are �1� updated with a history of the �(� desktop filer usage. �2� 07-Nov-1997 Built the Alias$Link run tool. �1� Fixed a SysFilePrefix related �+� shortcutmenuselect bug. �1� Added icon bar toggle feature �5� when mouse hits bottom of screen. 1� Added ALT-START_MENU click to 3� efficiently delete items in the !� startup menu. &4� 09-Nov-1997 Added auto cascading for desktop 03� windows. Some windows are never :-� auto cascaded. These are: D)� a) The Tooltip window N/� b) Start's dummyback window X4� c) Any window toggled full size, b,� that has input focus, l.� and a toggle size icon. v3� 09-Nov-1997 Added animated iconbar icon and �*� alternative tool tips. �0� 11-Nov-1997 Added selective cascading of �3� windows to reduce difficulty in �0� using menus. Changed Iconbar �2� button usage and 'alternative' �� tool tips. �5� 19-Nov-1997 Added sensible task bar tool tip. �0� Included StartPath$ to guard �3� against the <Start$Dir> getting �� corrupted. �-� Added extra checks before �0� deleteing auto-create links. �0� Auto ensure ~ directorys are 3� there whenever they are needed. 1� 21-Nov-1997 Disabled window repositioning 1� when a menu is displayed with $� MenuIsOpenFlag%. *0� 21-Nov-1997 Added window drifting. Added 43� dragable yes/no icons to window >%� cache management. H,� 22-Nov-1997 Ensured all windows were R4� properly cascaded, even if still \0� waiting for a state to occur f0� when they were allowed to be p� moved. z5� *********************************************** �� Note: �3� When running this program, it is important �2� to ensure that the corresponding !Boot or �2� !run file is run at the same time because �4� they ensure the <Start$Dir> variable is set �5� correctly. ie. Use the !Run file to run this �� file. �5� *********************************************** � � PictureType%=&d94:� Artworks �,DocumentType%=&bc5:� Impression Document �&User$="Admin":� User name is Admin � app$="Start" StartPath$="" StartDate$="" $5� startpath 255, startpathvar 32, startdatevar 32 .,$startdatevar="<Sys$Time> <Sys$Date>"+�0 8"$startpathvar="<Start$Dir>"+�0 B L8� Aquire the start path to use for delete operations V-ș"OS_GSTrans",startpathvar,startpath,255 `!StartPath$=�string(startpath) j t@� errorblock% 2048, block% 2048, block2% 2048, clistring 255 ~� winblock% 2048 � �� InvalidDrive$(255) �InvalidDriveCount%=0 � �,� dragspritename% 32, boundspritebox% 32 � �'� � �error(�$+" at line "+Þ):�#0:� � � �CACHE_SIZE% = 4096 �pause% = 200 �open_type%=1 close_type%=2 add_window%=1 subtract_window%=2 drag_type%=5 ( adjust%=1 2menu%=2 < select%=4 Ficonbarhandle%=0 Pdircount%=0 Zlinkloadaddr%=0 dobjecttype%=0 nlinkmenu%=0 xaddlink%=0 �)iconbar_timer%=�:iconbar_timerflag%=0 �2whandle_tooltip%=0:ToolTip%=0:tooltip_timer%=0 �%override_tooltip%=0:OldToolTip%=0 �internalstackposition%=-2 �oldstackposition%=0 �currentwindow%=0 �currentmenuhandle%=0 �firstmenuhandle%=-3 �IconBarMenuOpen%=0 �StartMenuSeperator%=-1 �SysFilePrefix%=126 �BottomEdgeFlag=0 �after%=0:cascade%=0 whandle_dummyback%=0 LastRightEdge%=0 CascadeRow%=0 "RandTipMax%=13 ,� RandTip$(RandTipMax%) 6RandTip$(0)=" Cannabis" @RandTip$(1)=" LSD" JRandTip$(2)=" Opium" T"RandTip$(3)=" Magic Mushrooms" ^RandTip$(4)=" Mescaline" hRandTip$(5)=" Peyote" r(RandTip$(6)=" Lophophora Williamsii" |RandTip$(7)=" Trips" �RandTip$(8)=" Acid" �RandTip$(9)=" Speed" �&RandTip$(10)=" Mind Bending Drugs" � RandTip$(11)=" Psychedelics" �RandTip$(12)=" Fun" � �IconBarAnimSize%=7 �$� IconBarAnim$(IconBarAnimSize%) �IconBarAnim$(0)="Sstart0" �IconBarAnim$(1)="Sstart1" �IconBarAnim$(2)="Sstart2" �IconBarAnim$(3)="Sstart3" �IconBarAnim$(4)="Sstart4" IconBarAnim$(5)="Sstart5" IconBarAnim$(6)="Sstart6" IconBarAnimStep%=0 &IconBarAnimDir%=1 0 : DMenuIsOpenFlag%=0 NAutoaddLock%=0 X b lQ� dblock% 1024, bootblock% 1024, shortcutmenu% 10192, shortcutmenudata% 20384 vE� main_menu% 256, typebuf% 256, iconbarlabel% 32, iconbardata% 32 �Y� string% 1024, bootstring% 1024, infodata% 2048, tooltipdata% 2048, tooltipicon% 512 �� cache% CACHE_SIZE% �� dirlist%(32), dirptr%(32) � �currentmenu%=main_menu% �cache_ext%=0 �task_handle%=0 �drag_button%=adjust% � DX%=0 �drag_icon%=0 �path$="" �in_leftregion=� �in_rightregion=� qf_timer=� regionxs%=16 regionys%=64 $iconbarlabel%="Start"+�0 *$iconbardata%="S!start"+�0 4 globalmenuptr%=shortcutmenu% > H$iconbarlabel%=""+�0 R$$iconbardata%=IconBarAnim$(0)+�0 \ f p9� *************************************************** z �quit%=� � � �init �0�PROCerror("Start path = "+StartPath$+CHR$0) ��CreateToolTip ��loadcache �7�DirectoryBoot(StartPath$+".Users."+User$+".Links") � �ȕ � quit% � �poll �� � ��DestroyToolTip ș "Wimp_CloseDown" � $9� *************************************************** . 8 ��GetDate B� Aquire date and time L-ș"OS_GSTrans",startdatevar,startpath,255 V!StartDate$=�string(startpath) `� j t9� *************************************************** ~ �� poll loop � ��poll �$ș"Wimp_Poll",0,block% � reason% �2� IF reason%<>0 PROCerror(STR$(reason%)+CHR$0) �Ȏ reason% � �� 0:�null_reason �� 2:�PollReason2 �%� 3:ș "Wimp_CloseWindow",,block% �� 6:�click(block%!12) �� 7:�dragdrop �� WHEN 8:PROCkeypressed �� 9:�menuselect � 17,18:�receive(reason%) 9� WHEN 19:PROCerror("Unsupported window definition.") � � ( 29� *************************************************** < F��PollReason2 P� ((!block%) > &ffff) � ZX� PROCerror("Window tobeopened:"+STR$~(!block%)+" behind: "+STR$~(block%!28)+CHR$0) d ș "Wimp_OpenWindow",,block% n� x.�currentwindow%=!block%:PROCOpenToolTip(2) �A� This is very wierd - the windowhandle is invalid and equals �?� the mouse pointer x position - must be a menu I reckon or �� could be a bug in RISCOS. �MenuIsOpenFlag%=1 �� � �� � ���GetScreenSize �3ș"OS_ReadModeVariable",-1,4 � ,,OS_EX%:� Eigen �+ș"OS_ReadModeVariable",-1,5 � ,,OS_EY% �3ș"OS_ReadModeVariable",-1,11 � ,,OS_WX%:� Size �,ș"OS_ReadModeVariable",-1,12 � ,,OS_WY% OS_MX%=(1+OS_WX%) << OS_EX% OS_MY%=(1+OS_WY%) << OS_EY% � " ,�DEFPROCkeypressed 6�LOCAL Char% @�Char%=block%!24 J-�REM Is this the delete or backspace key? T#�IF (Char%=8 OR Char%=&7f) THEN ^�REM Is this in a menu? h^�PROCerror("Window handle = "+STR$~(block%!0)+" -- main_menu% = "+STR$~(main_menu%)+CHR$0) r �ELSE | �SYS "Wimp_ProcessKey",Char% � �ENDIF ��ENDPROC � ���ReopenDummyWindow � !block2%=whandle_dummyback% �% ș"Wimp_GetWindowState",,block2% �% block2%!8=-1024:block2%!16=-1024 � block2%!28=-2 �" ș"Wimp_OpenWindow",,block2% �) after%=whandle_dummyback%:cascade%=0 � MenuIsOpenFlag%=0 �� � � �cascade � q%,OldAfter% � sx%, sy%, ox%, oy% &� ReopenFlag%, StackFlag% 0-� PaneFlag%, IsOpenFlag%, IsMoveableFlag% :� CurrentWin%,CurrentIcon% D Nq%=winblock% XPaneFlag%=� b l2� Get Current window immediately under pointer v$ș"Wimp_GetPointerInfo",,block2% �CurrentWinPtr%=block2%!12 �CurrentIcon%=block2%!16 � �OldAfter%=after% �!q%=after% �.� _Try_ and reopen this desktop window ... �!ș "XWimp_GetWindowState",,q% �#�after%=-1 �ReopenDummyWindow:� �CurrentWin%=!q% �after%=q%!28 �-� (CurrentWin%=-1 � (after%=OldAfter%)) � � �ReopenDummyWindow �� � Reposition window 2 � (cascade%=0) CascadeRow%=0:LastRightEdge%=0 / � !q%=after%:SYS "Wimp_GetWindowState",,q% * 4 PaneFlag%=� >2 � (((q%!32) � ((2^22)+(2^23)))>0) PaneFlag%=� H& � (((q%!32) � 32)=32) PaneFlag%=� R% IsOpenFlag% = ((q%!32) � (2^16)) \$ IsMoveableFlag% = ((q%!32) � 2) f1 � Has window moved at all for repositioning? p z ReopenFlag%=� � StackFlag%=� ��� IF (((q%!32) AND (2^18))>0 AND ((q%!32) AND (2^20))>0 AND ((q%!32) AND (2^27))>0) StackFlag%=FALSE:ReopenFlag%=FALSE:REM Toggled Maximise & has input focus & has toggle icon ��� (CurrentWin%=CurrentWinPtr% � ((q%!32) � (2^28))=0 � ((q%!32) � (2^30))=0 � ((q%!32) � (2^17))>0 � after%=-1) StackFlag%=�:ReopenFlag%=�:� Under pointer and _no_ horiz/vert scroll bars and fully visible (likely to be part of menu so leave alone) ��� (((q%!32) � (2^18))>0 � ((q%!32) � (2^27))>0 � ((q%!32) � (2^28))>0 � ((q%!32) � (2^30))>0) StackFlag%=�:ReopenFlag%=�:� Toggled Maximise & has toggle icon and has horiz/vert scroll bars - likely to be a word processor window ��� ( (q%!16 < (OS_MY%-(cascade%*40))) � (q%!4 > 0) � (q%!12 < (OS_MX%-40)) � (q%!8>40) � ((q%!32) � (2^17))>0) StackFlag%=�:ReopenFlag%=�:� Fully visible �@ � (CurrentWin%=whandle_tooltip%) StackFlag%=�:ReopenFlag%=� �B � (CurrentWin%=whandle_dummyback%) StackFlag%=�:ReopenFlag%=� �/ � (PaneFlag%=�) StackFlag%=�:ReopenFlag%=� �E � (IsOpenFlag%=0 � IsMoveableFlag%=0) StackFlag%=�:ReopenFlag%=� �5 � (MenuIsOpenFlag%=1) StackFlag%=�:ReopenFlag%=� �8� If pointer is over window and within the work area �� then don't move it. �0� (CurrentWin%=CurrentWinPtr%) ReopenFlag%=� 0 � Reset position of window and do a Re-Open � Get size of window � (StackFlag%=�) � $ ox%=q%!4 . oy%=q%!16 8 sx%=(q%!12)-(q%!4) B sy%=(q%!16)-(q%!8) L V< � Try and fit as many windows horizontally as possible `, � ((LastRightEdge%+sx%)<(OS_MX%-40)) � j q%!4=LastRightEdge% t0 q%!16=(OS_MY%-40)-(CascadeRow%*40):� 1160 ~ q%!12=(q%!4)+sx% �0 � ((q%!12)>(OS_MX%-40)) q%!12=(OS_MX%-40) � q%!8=(q%!16)-sy% � � ((q%!8)<40) q%!8=40 � LastRightEdge%=(q%!12)+48 � � � LastRightEdge%=0 � CascadeRow%+=1 � q%!4=(CascadeRow%*8) �0 q%!16=(OS_MY%-40)-(CascadeRow%*40):� 1160 � q%!12=(q%!4)+sx% �0 � ((q%!12)>(OS_MX%-40)) q%!12=(OS_MX%-40) � q%!8=(q%!16)-sy% � ((q%!8)<40) q%!8=40 LastRightEdge%=(q%!12)+48 � ( 2 � Enable window 'drift' < � (ox%<>q%!4) � F nx%=q%!4 P sx%=(q%!12)-(q%!4) Z dx%=nx%-ox% d � (�(dx%)>40) � n nx%=ox%+(�(dx%)*40) x q%!4=nx%:q%!12=nx%+sx% � � � � � � (oy%<>q%!16) � � ny%=q%!16 � sy%=(q%!16)-(q%!8) � dy%=ny%-oy% � � (�(dy%)>40) � � ny%=oy%+(�(dy%)*40) � q%!16=ny%:q%!8=ny%-sy% � � � � � �3 � Having allowed space for this window in the 3 � window cascade, are we sure we want to move � it just yet? " � (ReopenFlag%=�) � ,. ș "XWimp_SendMessage",2,q%,CurrentWin% 6 � @ J cascade%+=1 T ^ � h � r� | �3� ********************************************* � ���AnimateIconBar �0$iconbardata%=IconBarAnim$(IconBarAnimStep%) �%IconBarAnimStep%+=IconBarAnimDir% �@� (IconBarAnimStep%<0 � IconBarAnimStep%=IconBarAnimSize%) � �IconBarAnimStep%=0 �+� IconBarAnimDir% = IconBarAnimDir%*-1 �'� IconBarAnimStep%+=IconBarAnimDir% �� �3� Activate an update on the task bar icon ..... �!block2%=-2 �block2%!4=iconbarhandle% "ș"Wimp_GetIconState",,block2% (block2%!8=0:� Don't change anything, ,block2%!12=0:� Just signal an update ... &"ș"Wimp_SetIconState",,block2% 0� : D3� ********************************************* N2� What shall we do during the idle wimp poll ? X/� This is the most important aspect of this b2� program and one which should enable a lot of l2� change with future versions of the software. v3� ********************************************* ���null_reason � � window% �#ș"Wimp_GetPointerInfo",,block% �X%=block%!0 �Y%=block%!4 �window%=block%!12 �currentwindow%=window% ��GetScreenSize � �$� Are any mouse buttons pressed? �.� If not then reorganise [cascade] windows �� (((block%!8) � 7)=0) � � �cascade � -� Update the task bar icon each WIMP POLL �AnimateIconBar * 4-� If the task bar tool tip shows the TIME >� then update it ... H%� (ToolTip%=1) �UpdateToolTipTime R \#ș"Wimp_GetPointerInfo",,block% fX%=block%!0 pY%=block%!4 zwindow%=block%!12 �currentwindow%=window% � �(� This may be needed to stop flicker �� *fx19 � � �ENDIF �#�IF (qf_timer>0) PROCfocusdelay �� (X%<regionxs%) � ��left_corner:� �� �� (X%>(OS_MX%-regionxs%)) � ��right_corner:� �� #� Is Pointer over iconbar icon? C� Close tooltip if pointer moves over it (effectively push tip) l� IF (((block%!12)=-2 AND (block%!16=iconbarhandle%)) OR (window%=whandle_tooltip% AND ToolTip%>0)) THEN $7� (((block%!12)=-2 � (block%!16=iconbarhandle%))) � .�move_overiconbar 8� BOldToolTip%=0 L V9�IF (((TIME-tooltip_timer%)>100) AND ToolTip%>0) THEN `� (ToolTip%>0) � j:� (block%!16 <> whandle_tooltip%) iconbar_timerflag%=0 t�CloseToolTip ~� ��iconbar_timer%=TIME �iconbar_timerflag%=0 �� �� �(�IF (window%=-2) firstmenuhandle%=-2 �A�IF (window%<>-2) PROCpointernotoniconbar:REM Must come first �I� ((X%>regionxs% � X%<(OS_MX%-regionxs%)) � Y%>regionys%) �outoffocus �S�IF ((X%>regionxs% AND X%<(OS_MX%-regionxs%)) AND Y%=0) PROCpointeronbottomedge �� (Y%=0) � �-� (BottomEdgeFlag=0) �pointeronbottomedge �� �BottomEdgeFlag=0 � �PROCCloseToolTip �PROCOpenToolTip(2) (� 2 <9� *************************************************** F P��pointeronbottomedge Z� stackposition% d4� Is iconbar at top of stack? If not make it so. n�SYS"Wimp_ProcessKey",&1dc x �0� PROCerror("Pointer on bottom edge."+CHR$0) �1� Open up start menu if it's not already open �BottomEdgeFlag=1 �� Close relevant window ��SYS "Wimp_CreateMenu",,-1 �� Open start menu ��PROCclick_iconbarmenu ��ENDPROC � ��!block%=-2 �%�SYS"Wimp_GetWindowState",,block% ��stackposition%=block%!28 �!�IF (stackposition%<>-1) THEN �block%!28=-1 !�SYS"Wimp_OpenWindow",,block% � Toggle icon bar back/front "ș"Wimp_ProcessKey",&1dc , 60� Reopen dummyback window at bottom of stack @!block%=whandle_dummyback% J#ș"Wimp_GetWindowState",,block% T"block%!8=-1024:block%!16=-1024 ^block%!28=-2 hș"Wimp_OpenWindow",,block% r(after%=whandle_dummyback%:cascade%=0 | �� � ���pointernotoniconbar � � ENDPROC �7� Is iconbar on bottom of stack? If not make it so/ �=� No allowed to manually open iconbar so use our internal �� value �G� (ToolTip%=0 � (ToolTip%<>0 � currentwindow%<>whandle_tooltip%)) � �9� firstmenuhandle%=-2 firstmenuhandle%=currentwindow% �� � �!block%=-2 �#ș"Wimp_GetWindowState",,block% stackposition%=block%!28 /�IF (stackposition%=oldstackposition%) THEN +� (stackposition%<>oldstackposition%) � &�block%!28=-2 0"�SYS"Wimp_CloseWindow",,block% :@� (currentwindow%<>firstmenuhandle% � firstmenuhandle%>-2) � Dș"Wimp_ProcessKey",&1dc Nfirstmenuhandle%=-3 X �ENDIF b!block%=-2 l#ș"Wimp_GetWindowState",,block% vstackposition%=block%!28 �=�IF (stackposition%<>-1) oldstackposition%=stackposition% �$oldstackposition%=stackposition% �� �� �� � �>� IF (internalstackposition%=-1 AND currentwindow%>0) THEN �� SYS"Wimp_ProcessKey",&1dc �7� PROCerror("Window : "+STR$(currentwindow%)+CHR$0) �-� internalstackposition%=-2:REM At bottom �� ENDIF � � ENDPROC � ��outoffocus (� (in_leftregion) � �leaveleftregion *� (in_rightregion) � �leaverightregion qf_timer=� *� 4 >��leaveleftregion Hin_leftregion=� R� \ f��leaverightregion pin_rightregion=� z� � ���focusdelay �6� ((�-pause%)>qf_timer) � qf_timer=-1:�OpenInfoBox �� � ���left_corner �,� (in_leftregion=�) ec_timer=�:ec_flag=� �in_leftregion=� �#� Check if windows need opening �$� (�-ec_timer>=50 � ec_flag=�) � ��reopenfiler:ec_flag=� �� � � ��right_corner $-� (in_rightregion=�) ec_timer=�:ec_flag=� .in_rightregion=� 8#� Check if windows need closing B3�IF (TIME-ec_timer>=100 AND ec_flag=FALSE) THEN L� (ec_flag=�) � V'�closefiler:�CloseInfoBox:ec_flag=� `� j� t ~9� *************************************************** � ���OpenInfoBox �!block%=whandle_info% �#ș"Wimp_GetWindowState",,block% �ș"Wimp_OpenWindow",,block% �� � ���CloseInfoBox �!block%=whandle_info% � ș"Wimp_CloseWindow",,block% �� � 9� *************************************************** ��CreateToolTip � XOffset% (1� Create the tooltip and dummy global windows 26� The tooltip window displays brief info about the <� icon under the pointer. F6� The dummy window is needed to provide a 'bottom' P3� window for the window re-organisation tool to Z� start from. d n� Create the tooltip window xTip$="Hello" �XS%=(�(Tip$)*16)+20:YS%=40 �#ș"Wimp_GetPointerInfo",,block% �'� Define screen position of tooltip �XOffset%=XS%/2 �� (XOffset%>32) XOffset%=32 �X%=(!block%)-XOffset% �Y%=(block%!4)+24 ��GetScreenSize �%� ((X%+XS%)>OS_MX%) X%=OS_MX%-XS% �� (X%<0) X%=0 �.� ((Y%+YS%)>OS_MY%) Y%=(block%!4)-(YS%+24) �� IF ((Y%-YS%)<0) Y%=0 �;!block%=X%:block%!4=Y%:block%!8=X%+XS%:block%!12=Y%+YS% XS%=(512*16)+20:YS%=40 ,block%!16=0:block%!20=0:� Scroll offsets :block%!24=-1:block%!28=&80000050:� Depth, window flags "3block%!32=&00070207:block%!36=&120103:� Colours ,8block%!40=0:block%!44=-YS%:block%!48=XS%:block%!52=0 6;block%!56=&19:block%!60=3<<12:� Titlebar/workarea flags @)block%!64=0:block%!68=0:� Sprite area J$(block%+72)=�0 Tblock%!84=1 ^)� Define 1 icon starting at block%!88 h,!tooltipicon%=0:� Null validation string r)$(tooltipicon%+4)=Tip$+�0:� Icon text |block%!88=4:� Bounding box � block%!92=-40:� Bounding box �;block%!96=((512*16)+20):� Bounding box of _largest_ tip �block%!100=0:� Bounding box �block%!104=&17003101 �block%!108=tooltipicon%+4 �block%!112=tooltipicon% �"block%!116=512:� Buffer length �4ș"Wimp_CreateWindow",,block% � whandle_tooltip% �XS%=(�(Tip$)*16)+20:YS%=40 �#ș"Wimp_GetPointerInfo",,block% �'� Define screen position of tooltip �XOffset%=XS%/2 �� (XOffset%>32) XOffset%=32 X%=(!block%)-XOffset% �GetScreenSize %� ((X%+XS%)>OS_MX%) X%=OS_MX%-XS% &� (X%<0) X%=0 0.� ((Y%+YS%)>OS_MY%) Y%=(block%!4)-(YS%+24) :Y%=-1024 D� IF ((Y%-YS%)<0) Y%=0 N� Get Tooltip window state X!block%=whandle_tooltip% b#ș"Wimp_GetWindowState",,block% l?block%!4=X%:block%!8=-1024:block%!12=X%+XS%:block%!16=-1024 v,block%!20=0:block%!24=0:� Scroll offsets �� block%!28=-1 �ș"Wimp_OpenWindow",,block% �ToolTip%=0 � � � �"� Create the dummy back window �'� Define screen position of tooltip �XS%=(�(Tip$)*16)+20:YS%=40 �XOffset%=XS%/2 �� (XOffset%>32) XOffset%=32 � X%=64 �Y%=-1024 ;!block%=X%:block%!4=Y%:block%!8=X%+XS%:block%!12=Y%+YS% XS%=(512*16)+20:YS%=40 ,block%!16=0:block%!20=0:� Scroll offsets :block%!24=-1:block%!28=&80000050:� Depth, window flags *3block%!32=&00070207:block%!36=&120103:� Colours 48block%!40=0:block%!44=-YS%:block%!48=XS%:block%!52=0 >;block%!56=&19:block%!60=3<<12:� Titlebar/workarea flags H)block%!64=0:block%!68=0:� Sprite area R$(block%+72)=�0 \block%!84=1 f)� Define 1 icon starting at block%!88 p,!tooltipicon%=0:� Null validation string z)$(tooltipicon%+4)=Tip$+�0:� Icon text �block%!88=4:� Bounding box � block%!92=-32:� Bounding box �;block%!96=((512*16)+20):� Bounding box of _largest_ tip � block%!100=-8:� Bounding box �block%!104=&17003101 �block%!108=tooltipicon%+4 �block%!112=tooltipicon% �"block%!116=512:� Buffer length �6ș"Wimp_CreateWindow",,block% � whandle_dummyback% �� Get Tooltip window state �!block%=whandle_dummyback% �#ș"Wimp_GetWindowState",,block% �block%!28=-2 ș"Wimp_OpenWindow",,block% (after%=whandle_dummyback%:cascade%=0 $� . 8��DestroyToolTip B!block%=whandle_tooltip% L ș"Wimp_CloseWindow",,block% V!ș"Wimp_DeleteWindow",,block% ` j!block%=whandle_dummyback% t ș"Wimp_CloseWindow",,block% ~!ș"Wimp_DeleteWindow",,block% �� � ���UpdateToolTipTime �� XOffset%, OldTip$ �OldTip$=Tip$ ��GetDate �Tip$=StartDate$ �� (OldTip$<>Tip$) � �3� IF (TipID%=1) Tip$="after% = &"+STR$~(after%) �XS%=(�(Tip$)*16)+20:YS%=40 �$ș"Wimp_GetPointerInfo",,block2% �!� Adjust Tooltip window state !block2%=whandle_tooltip% $ș"Wimp_GetWindowState",,block2% X%=block2%!4 Y%=block2%!8 (!block2%=whandle_tooltip% 2Ablock2%!4=X%:block2%!8=Y%:block2%!12=X%+XS%:block2%!16=Y%+YS% <.block2%!20=0:block2%!24=0:� Scroll offsets Fblock2%!28=-1 P)$(tooltipicon%+4)=Tip$+�0:� Icon text Z"�SYS"Wimp_OpenWindow",,block2% d� Update icon n!block2%=whandle_tooltip% xblock2%!4=0 �"ș"Wimp_GetIconState",,block2% �(block2%!8=0:� Don't change anything, �,block2%!12=0:� Just signal an update ... �"ș"Wimp_SetIconState",,block2% �� �� � ���OpenToolTip(TipID%) �� XOffset%, RandTipID% �� (TipID%=ToolTip%) � � � (ToolTip%>0) �CloseToolTip �� Create ToolTip Window �)� (TipID%=1) �GetDate:Tip$=StartDate$ � (TipID%=2) � Tip$="Click for more ..." " RandTipID%=�(RandTipMax%*2)-1 "# � (RandTipID% < RandTipMax%) � ,$ Tip$=Tip$+RandTip$(RandTipID%) 6 � @� J;� (TipID%=3) Tip$="currentwindow% = "+�(currentwindow%) T3� IF (TipID%=1) Tip$="after% = &"+STR$~(after%) ^XS%=(�(Tip$)*16)+20:YS%=40 h#ș"Wimp_GetPointerInfo",,block% r'� Define screen position of tooltip |XOffset%=XS%/2 �� (XOffset%>32) XOffset%=32 �X%=(!block%)-XOffset% �Y%=(block%!4)+24 ��GetScreenSize �%� ((X%+XS%)>OS_MX%) X%=OS_MX%-XS% �� (X%<0) X%=0 �.� ((Y%+YS%)>OS_MY%) Y%=(block%!4)-(YS%+24) �� IF ((Y%-YS%)<0) Y%=0 � �!� Adjust Tooltip window state �!block%=whandle_tooltip% �#ș"Wimp_GetWindowState",,block% �!block%=whandle_tooltip% =block%!4=X%:block%!8=Y%:block%!12=X%+XS%:block%!16=Y%+YS% ,block%!20=0:block%!24=0:� Scroll offsets block%!28=-1 &)$(tooltipicon%+4)=Tip$+�0:� Icon text 0ș"Wimp_OpenWindow",,block% :ToolTip%=TipID% Dtooltip_timer%=� N� X b��CloseToolTip l� (ToolTip%=0) � v!block%=whandle_tooltip% �#ș"Wimp_GetWindowState",,block% �!block%=whandle_tooltip% �block%!8=-1024 �block%!16=-1024 �ș"Wimp_OpenWindow",,block% �"�SYS"Wimp_CloseWindow",,block% �$� SYS"Wimp_DeleteWindow",,block% �ToolTip%=0 �� � ���PersistCloseToolTip �� (ToolTip%=0) � �OldToolTip%=ToolTip% !�!block%=whandle_tooltip% !"�SYS"Wimp_CloseWindow",,block% !!block%=whandle_tooltip% ! #ș"Wimp_GetWindowState",,block% !*!block%=whandle_tooltip% !4block%!8=-1024 !>block%!16=-1024 !Hș"Wimp_OpenWindow",,block% !R$� SYS"Wimp_DeleteWindow",,block% !\ToolTip%=0 !f� !p !z9� *************************************************** !� !���init_drag(icon%) !�qf_timer=-1 !�#ș"Wimp_GetPointerInfo",,block% !�ox%=block%!0 !�oy%=block%!4 !�block%!4=icon% !�drag_icon%=icon% !�block%!4=drag_type% !�block%!8=ox%-32 !�block%!12=oy%-32 !�block%!16=ox%+32 !�block%!20=oy%+32 "block%!24=&80000000 "block%!28=&80000000 "block%!32=&7FFFFFFF "$block%!36=&7FFFFFFF ".ș"Wimp_DragBox",,block% "8 "B� Start a sprite drag .... "L3� (icon%=add_window%) $dragspritename%="yes"+�0 "V7� (icon%=subtract_window%) $dragspritename%="no"+�0 "`!boundspritebox%=0 "jboundspritebox%!4=0 "tboundspritebox%!8=ox%+24 "~boundspritebox%!12=oy%+24 "�Fș"DragASprite_Start",2+8+64+128,1,dragspritename%,boundspritebox% "�� "� "���dragdrop "�#ș"Wimp_GetPointerInfo",,block% "�block%!20=block%!12 "�block%!24=block%!16 "�block%!28=!block% "�block%!32=block%!4 "�block%!36=0 "�!block%=64:block%!12=0 "�block%!16=1:block%!40=&fff #$(block%+44) ="" # 6ș"Wimp_SendMessage",18,block%,block%!20,block%!24 # #"� Cancel a sprite drag ....... #(ș"DragASprite_Stop" #2� #< #F9� *************************************************** #P #Zݤstring(ptr%) #d� a$ #nȕ ?ptr%<>0 � �(a$)<254 #xa$+=�(?ptr%):ptr%+=1 #�� #�=a$ #� #�ݤget_line(filehandle%) #�� a$,z% #�z%=0 #� a$="" #�� #�+� (�(�#filehandle%)) � z%=�#filehandle% #�� z%>=32 a$+=�(z%) #�� z%<32 � �#filehandle% #� =a$+�0 #� $��put_line(filehandle%, A$) $� a$,z% $z%=1 $"�z%=1� �(A$) $,a$=�A$,z%,1) $6&� (�(a$)>0) � �#filehandle%, �(a$) $@� $J�#filehandle%, 10 $T� $^ $h9� *************************************************** $r $|��loadcache $�cache_ext%=0 $� !cache%=0 $�,� Load in commands to open filer display $�1F%=�(StartPath$+".Users."+User$+".~~open"+�0) $�� $�A$=�get_line(F%) $�,� A$<>"" � �add_to_cache(A$, open_type%) $� � �#F% $��#F% $�-� Load in commands to close filer display $�2F%=�(StartPath$+".Users."+User$+".~~close"+�0) $�� $�A$=�get_line(F%) %-� A$<>"" � �add_to_cache(A$, close_type%) % � �#F% %�#F% %&� %0 %:��add_to_cache(com$, type%) %Drecord_size%=�(com$)+1+2 %N�� (record_size%>255) � �error("Path too big! Please shrink !Start and reorganise your (lengthy labeled) directory structure.") %X%?(cache%+cache_ext%)=record_size% %b ?(cache%+cache_ext%+1)=type% %l�X%=1 � �(com$) %v,?(cache%+cache_ext%+1+X%)=�(�com$,X%,1)) %�� %�@?(cache%+cache_ext%+1+X%)=0:� Add terminating zero to string %�cache_ext%+=record_size% %�j� (cache_ext%>CACHE_SIZE%) � �error("Too many windows! Please increase CACHE_SIZE% and rerun !Start.") %�@?(cache%+cache_ext%)=0:� Initialise next record size to NULL %�� %� %�9� *************************************************** %� %���cache_open %�cache_ptr%=0 %�� %� r_size%=?(cache%+cache_ptr%) & type%=?(cache%+cache_ptr%+1) &K� (r_size%>0 � type%=open_type%) � �execute_string(cache%+cache_ptr%+2) &cache_ptr%+=r_size% & �r_size%=0 &* &4�OpenFSView &>� &H &R��cache_close &\cache_ptr%=0 &f� &p r_size%=?(cache%+cache_ptr%) &z type%=?(cache%+cache_ptr%+1) &�L� (r_size%>0 � type%=close_type%) � �execute_string(cache%+cache_ptr%+2) &�cache_ptr%+=r_size% &��r_size%=0 &� &��CloseFSView &�� &� &���execute_string(str_ptr%) &�A$=�string(str_ptr%) &�� A$<>"" � �(A$) &�� &� &�9� *************************************************** ' '��reopenfiler '�cache_close '$�cache_open '.� '8 'B��closefiler 'L�cache_close 'V� '` 'j9� *************************************************** 't '~��savedesktop '�#DX%=�(StartPath$+".tmpfile"+�0) '�dblock%!0=28 '�dblock%!4=task_handle% '�dblock%!12=0 '�dblock%!16=10 '�dblock%!20=DX% '�dblock%!24=0 '�%ș"Wimp_SendMessage",17,dblock%,0 '�� '� '�6� ************************************************ '�'� Get leaf name of a full path name (6� ************************************************ ( ݤGetLeafName(ptr%) (� a$,leafptr%,size% (� Determine size of zstring ((size%=0 (2ȕ ?(ptr%+size%)>31 (<size%+=1 (F� (P"� Determine offset of leafname (Zleafptr%=size% (d.ȕ (?(ptr%+leafptr%)<>�(".")) � leafptr%>0 (nleafptr%-=1 (x� (�leafptr%+=1 (�� Build leafname (� a$="" (�ȕ leafptr%<size% (�a$+=�(?(ptr%+leafptr%)) (�leafptr%+=1 (�� (�=a$ (� (�6� ************************************************ (�-� function to deal with incoming messages (�6� ************************************************ (���receive(reason%) )message%=block%!16 )4� PROCerror("Message : &"+STR$~(message%)+CHR$0) )Ȏ message% � )"� 0:quit%=� ),�� 3:�data_load_add_link:� PROCerror("DataLoad:"+FNstring(block%+44)+" Leafname:"+FNGetLeafName(block%+44)+" Type:&"+STR$~(!(block%+40))+CHR$0) )6� 2:�data_ack )@� 5:�data_open )J� 10:�desktop_ack )T� &400C0:�submenu_warning )^� &400C9:IconBarMenuOpen%=0 )h� )r� )| )�+� User has double clicked on a fileicon )�=� Response - store a link to this file in the ~ directory )���data_open )�� type%, destinationdir$ )�#newlinkfile$=�string(block%+44) )�(newlinkleaf$=�GetLeafName(block%+44) )�type%=!(block%+40) )�,� PROCerror("Type = "+STR$(type%)+CHR$0) )�8destinationdir$=StartPath$+".Users."+User$+".Links." )� )�9� Discard this link because we are already processing )�8� a new one. A bit disastrous this but we don't have )�'� support for threads in BASIC .... )�� (AutoaddLock%<>0) � )� )�� (type%=4096) � )�!� Store this directory access *?destinationdir$=destinationdir$+�(SysFilePrefix%)+"Folders" *(�autoaddnewshortcut(destinationdir$) *� *& *0� (type%=8192) � *:#� Store this application access *D@destinationdir$=destinationdir$+�(SysFilePrefix%)+"Programs" *N(�autoaddnewshortcut(destinationdir$) *X� *b *l� (type%<4096) � *v � (type%=DocumentType%) � *�A destinationdir$=destinationdir$+�(SysFilePrefix%)+"Document" *�) �autoaddnewshortcut(destinationdir$) *� � *� *� � (type%=PictureType%) � *�@ destinationdir$=destinationdir$+�(SysFilePrefix%)+"Picture" *�) �autoaddnewshortcut(destinationdir$) *� � *� *�5 � (type%<>PictureType% � type%<>DocumentType%) � *�> destinationdir$=destinationdir$+�(SysFilePrefix%)+"Files" *�) �autoaddnewshortcut(destinationdir$) *� � +� + +� + +*,��autoaddnewshortcut(autodropdirectory$) +4#� number%, next%,numberofitems% +>>� oldestdate%,oldestname$,oldesttype%,oldestnext%,oldnext% +H� delstring$ +RAutoaddLock%=1 +\"�ensuredir(autodropdirectory$) +f4� Auto insert directorys have a limit of 9 items +p� Is link directory empty? +znumberofitems%=0 +�next%=0 +�oldestdate%=0 +�&ȕ(next%<>-1 � numberofitems%<=16) +�"$string%=autodropdirectory$+�0 +�oldnext%=next% +�Eș "OS_GBPB",11,string%,dblock%,1,next%,63,"*" � ,,,number%,next% +�� next%<>-1 � +�numberofitems%+=1 +�|� ((dblock%!24)<oldestdate% � oldestdate%=0) oldestdate%=dblock%!24:oldestname$=�string(dblock%+29):oldestnext%=oldnext% +�� +� +�9� Give a bit more control to user while updateing the +�1� links directory. This may be a bad idea ... , �poll , ,� ,$� (numberofitems%<9) � ,.& � If so then automatically insert ,8( �addnewshortcut(autodropdirectory$) ,B� ,L+ � Intelligently delete an old file and ,V � Get filetype of this file ,`# $string%=autodropdirectory$+�0 ,j9 ș "OS_GBPB",12,string%,dblock%,1,oldestnext%,63,"*" ,t oldesttype%=dblock%!20 ,~ ,�] � PROCerror("Oldest file to remove : "+oldestname$+" of type "+STR$~(oldesttype%)+CHR$0) ,�- � Delete the oldest link in this dir ... ,�: � Final check - !Start can only remove a file if it's ,�6 � filetype is &af3 ... (Precaution against error) ,� � (oldesttype%=&af3) � ,�< delstring$="delete "+autodropdirectory$+"."+oldestname$ ,�4 � PROCerror("about to OSCLI "+delstring$+CHR$0) ,� �(delstring$+�0) ,� � insert a new one ... ,�( �addnewshortcut(autodropdirectory$) ,� � ,�� -AutoaddLock%=0 - � - -2� Prompt user to select directory for new link -(��data_load_add_link -2*� path$,leaf$,type%,leafptr%,linkname$ -< � (�CheckLinksDirExists=0) � -Fpath$=�string(block%+44) -P!leaf$=�GetLeafName(block%+44) -Ztype%=!(block%+40) -d8linkname$=StartPath$+".Users."+User$+".Links."+leaf$ -nnewlinkleaf$=leaf$ -x#newlinkfile$=�string(block%+44) -�� Is link directory empty? -�3$string%=StartPath$+".Users."+User$+".Links"+�0 -�;ș "OS_GBPB",10,string%,dblock%,1,0,63,"*" � ,,,number% -�� number%=0 � -�4� If so then automatically add to root directory -�8�addnewshortcut(StartPath$+".Users."+User$+".Links") -�� -��showshortcutmenu(1) -�� -�� -� -�,� Add new link to the shortcut directory -�$��addnewshortcut(dropdirectory$) .� linkname$,leafptr% .-linkname$=dropdirectory$+"."+newlinkleaf$ .$string%=newlinkfile$+�0 ."A�PROCerror("Contents of "+linkname$+" = "+newlinkfile$+CHR$0) .,leafptr%=string% .68� Check to see if this file already exists and if so .@� prompt for overwrite. .JX%=�(linkname$+�0) .Tȕ((?leafptr%) > 31) .^�#X%, ?leafptr% .hleafptr%+=1 .r� .|&�#X%, 10:� Output a terminating LF .��#X% .�� Set type appropriately .�%�("SetType "+linkname$+" af3"+�0) .�� .� .���data_ack .�� Store path in temp string .�path$=�string(block%+44) .�path$=�path$) .�dhandle%=block%!20 .�#� �path$,"<Wimp$ScrapDir>")>0 � .�' �IF (drag_icon%=add_window%) THEN .�@ �error("You can't add that to the Filer window cache."+�0) / �ENDIF / � /� /&� Compile desktop boot file /0ș"Hourglass_On" /:-� (drag_icon%=add_window%) � �savedesktop /D6� (drag_icon%=subtract_window%) � �subtract_window /N� /X /b��desktop_ack /l6� If we get a desktop_ack then that means that all /v9� applications have responded to the request to write /�� to the desktop boot file. /�� (DX%<>0) � �#DX%:DX%=0 /�*� drag_icon%=add_window% � �add_window /�� /� /�9� *************************************************** /� /���add_window /�9� Go through desktop bootfile looking for path string /�9� If this line contains path_string then add relevant /�'� line of boot file to config file. /�newline$="" /�"X%=�(StartPath$+".tmpfile"+�0) 0� 0A$=�get_line(X%) 0path_start%=�A$, path$) 0 path_length%=�(path$) 0*f� (�A$, "Filer_OpenDir")>0 � path_start%>0 � �(�A$,path_start%+path_length%,1))<=32) � newline$=A$ 04 � �#X% 0>�#X% 0H7� No serious precautions needed here because of the 0R � file name used ... tmpfile 0\)�("Delete "+StartPath$+".tmpfile"+�0) 0f 0p1X%=�(StartPath$+".Users."+User$+".~~Open"+�0) 0z �#X%=�#X% 0��put_line(X%, newline$) 0��#X% 0� 0�2X%=�(StartPath$+".Users."+User$+".~~Close"+�0) 0� �#X%=�#X% 0�*�put_line(X%, "Filer_CloseDir "+path$) 0��#X% 0�� Re-initialise the Cache 0��loadcache 0�ș"Hourglass_Off" 0�� 0� 0�9� *************************************************** 1 1��subtract_window 11X%=�(StartPath$+".Users."+User$+".~~Open"+�0) 1$2Y%=�(StartPath$+".Users."+User$+".tmpfile"+�0) 1.� 18A$=�get_line(X%) 1Bpath_start%=�A$, path$) 1Lpath_length%=�(path$) 1Vk� (�A$, "Filer_OpenDir")=0 � path_start%=0 � �(�A$,path_start%+path_length%,1))>32) � �put_line(Y%, A$) 1` � �#X% 1j�#X% 1t�#Y% 1~8�("Delete "+StartPath$+".Users."+User$+".~~Open"+�0) 1�O�("Rename "+StartPath$+".tmpfile "+StartPath$+".Users."+User$+".~~Open"+�0) 1� 1�2X%=�(StartPath$+".Users."+User$+".~~Close"+�0) 1�"Y%=�(StartPath$+".tmpfile"+�0) 1�� 1�A$=�get_line(X%) 1�path_start%=�A$, path$) 1�path_length%=�(path$) 1�l� (�A$, "Filer_CloseDir")=0 � path_start%=0 � �(�A$,path_start%+path_length%,1))>32) � �put_line(Y%, A$) 1� � �#X% 1��#X% 1��#Y% 29�("Delete "+StartPath$+".Users."+User$+".~~Close"+�0) 2 P�("Rename "+StartPath$+".tmpfile "+StartPath$+".Users."+User$+".~~Close"+�0) 2� Re-initialise the Cache 2�loadcache 2(ș"Hourglass_Off" 22� 2< 2F9� *************************************************** 2P9� *************************************************** 2Z9� *************************************************** 2d9� *************************************************** 2n 2x ��init 2�=� Do ~~Open and ~~Close files exist? If not, create empty 2�0� copies of them to prevent !Start crashing. 2�#�ensuredir(StartPath$+".Users") 2�)�ensuredir(StartPath$+".Users.Admin") 2�/�ensuredir(StartPath$+".Users.Admin.Links") 2� 2�1$string%=StartPath$+".Users."+User$+".~~Open" 2�$ș"OS_File",17,string% � result% 2�C� (result%=0) � X%=�(StartPath$+".Users."+User$+".~~Open"):�#X% 2�2$string%=StartPath$+".Users."+User$+".~~Close" 2�$ș"OS_File",17,string% � result% 2�D� (result%=0) � X%=�(StartPath$+".Users."+User$+".~~Close"):�#X% 2� 3Pș "Wimp_Initialise",200,&4B534154,app$ � current_wimp_version%,task_handle% 3 32ș"Wimp_OpenTemplate",,StartPath$+".Templates" 3"$string%="Info" 3,Gș"Wimp_LoadTemplate",,block%,infodata%,infodata%+2048,-1,string%,0 361ș"Wimp_CreateWindow",,block% � whandle_info% 3@ș"Wimp_CloseTemplate" 3J 3T � �dVs 3^�setupmenu(main_menu%) 3h 3r=� Install an icon on the icon bar using the shortcut icon 3|aiconbarhandle%=�create_icon(-2,0,-16,84,106,&1700310B,"!start",iconbarlabel%,iconbardata%,32) 3� 3�� 3� 3�9� *************************************************** 3�9� *************************************************** 3�9� *************************************************** 3�9� *************************************************** 3� 3�� "Start",5 3�� 0,whandle_info%,"Info" 3�� 0,-1,"Clean Desk" 3�� 0,-1,"NoHourglass" 3�� 0,-1,"Edit Links" 4� &80,-1,"Quit" 4 4?� ********************************************************* 4& 40<� function to inform the wimp of the presence of an icon 4:Fݤcreate_icon(whan%,ix%,iy%,iw%,ih%,flag%,text$,ptr1%,ptr2%,ptr3%) 4D!block%=whan% 4Nblock%!4=ix% 4Xblock%!8=iy% 4bblock%!12=ix%+iw% 4lblock%!16=iy%+ih% 4vblock%!20=flag% 4�� ptr1%=0 � 4�$(block%+24)=text$ 4�� 4�block%!24=ptr1% 4�block%!28=ptr2% 4�block%!32=ptr3% 4�� 4�*ș"Wimp_CreateIcon",,block% � ihandle% 4� =ihandle% 4� 4�>� ******************************************************** 4� 4�+� General mouse click handling routine. 5D� Note to people who don't really have a clue about WIMP system: 5=� All clickings on menus will never reach this procedure, 5:� it deals with all clicks on windows and the iconbar. 5 ��click(win%) 5* Ȏ win% � 54!� -2:�click_iconbar(block%!8) 5>)� whandle_info%:�click_info(block%!8) 5H� 5R� 5\ 5f��click_iconbar(button%) 5pȎ button% � 5z� 0:�move_overiconbar 5�� 1:�click_iconbaradjust 5�� 2:�click_iconbarmenu 5�� 4:�click_iconbarselect 5�� 5�� 5� 5���move_overiconbar 5�-� IconBarMenuOpen%=1 iconbar_timerflag%=0 5�;� Is pointer over iconbar icon? If so inc iconbar_timer 5�X� (iconbar_timerflag%=0 � IconBarMenuOpen%<>1) iconbar_timerflag%=1:iconbar_timer%=� 5�l� (((�-iconbar_timer%)>25) � iconbar_timerflag%=1 � OldToolTip%<>1) �OpenToolTip(1):iconbar_timerflag%=2 5�W� (((�-iconbar_timer%)>400) � ToolTip%>0) �PersistCloseToolTip:iconbar_timerflag%=0 5�� 6 6��click_iconbargeneral 6%� ToolTip%=1 �PersistCloseToolTip 6$#ș"Wimp_GetPointerInfo",,block% 6.override_tooltip%=1 68;IconBarMenuOpen%=1:� Inhibit tool tip display over menu 6B � (�-1) � 6L/�showmenu(main_menu%,!block%-64, 96+(5*44)) 6V� 6`�showshortcutmenu(0) 6j� 6t� 6~ 6���click_iconbarmenu 6��click_iconbargeneral 6�� 6� 6���click_iconbarselect 6�� (�-1) � (�-2) � 6�� Open cache windows 6��reopenfiler 6�� 6�� 6� 6� � (�-2) � 7 � Start drag to add a window 7 #ș"Wimp_GetPointerInfo",,block% 7(� (block%!8) �init_drag(add_window%) 7� 7(� Click menu 72�click_iconbargeneral 7<� 7F� 7P 7Z��click_iconbaradjust 7d� (�-1) � (�-2) � 7n� Close cache windows 7x�closefiler:�CloseInfoBox 7�� 7�� 7� � (�-2) � 7�#ș"Wimp_GetPointerInfo",,block% 7�#� Start drag to remove a window 7�-� (block%!8) �init_drag(subtract_window%) 7�� 7��click_iconbargeneral 7�� 7�� 7� 7�ݤCheckLinksDirExists 7�� dir$,result% 8,dir$=StartPath$+".Users."+User$+".Links" 8%� Does the Links directory exist? 8$string%=dir$+�0 8"$ș"OS_File",17,string% � result% 8,� If not, create one. 86&� (result%=0) � �("CDIR "+dir$+�0) 8@$ș"OS_File",17,string% � result% 8J'� Has it created it? If not, error. 8T� (result%=0) � 8^.�error("Fatal : Couldn't create "+dir$+�0) 8h=0 8r� 8|=1 8� 8���ensuredir(edir$) 8� � result% 8�� Does the directory exist? 8�$string%=edir$+�0 8�$ș"OS_File",17,string% � result% 8�� If not, create one. 8�'� (result%=0) � �("CDIR "+edir$+�0) 8�$ș"OS_File",17,string% � result% 8�'� Has it created it? If not, error. 8�� (result%=0) � 8�/�error("Fatal : Couldn't create "+edir$+�0) 8�� =0 9� 9�=1 9� 9& 908� ************************************************** 9:%� Start building the shortcutmenu 9D8� ************************************************** 9N��showshortcutmenu(arg%) 9X'� (ToolTip%=1) �PersistCloseToolTip 9baddlink%=arg% 9l � (�CheckLinksDirExists=0) � 9vdirptr%(0)=shortcutmenu% 9�'� linkmenudepth%=0:REM At top level 9� 9�I�SingleDirectoryRead(StartPath$+".Users."+User$+".Links", "Start", 0) 9� initialmenusize%=dirlist%(0) 9�+� initialmenusize%=0 initialmenusize%=1 9�#ș"Wimp_GetPointerInfo",,block% 9�C�showmenu(shortcutmenu%,!block%-64, 96+((initialmenusize%)*44)) 9�� 9� 9� 9� 9�;� ***************************************************** 9�;� Read contents of a directory into the menu data areas :;� ***************************************************** :<��SingleDirectoryRead(localdir$,dirfilename$,linkdepth%) :<� oldlocaldir$,olddirfilename$,oldlinkdepth%, olddirptr% : � dirsize%, DirScan% :*-� dir$,next%,type%,item$,currentdir%,ptr% :4-� currentmenuptr%, locali%, width%,title$ :>� TitlePtr%, MenuExtent% :HB� filetype%, filetypeinfo%,linktype%,objecttype%,linktypeinfo% :R� ValidLoadFlag% :\� CurrentLinkDepth% :f� NumberOfLinks% :p :z CurrentLinkDepth%=linkdepth% :�oldlocaldir$ = localdir$ :�"olddirfilename$ = dirfilename$ :�oldlinkdepth% = linkdepth% :�%olddirptr%=dirptr%(oldlinkdepth%) :�DirScan%=� :� :�7�:� Repeat until loaded in directory with no errors :�localdir$ = oldlocaldir$ :�"dirfilename$ = olddirfilename$ :�linkdepth% = oldlinkdepth% :�%dirptr%(oldlinkdepth%)=olddirptr% :�DirScan%=� :� ;5� Calculate pointer to shortcutmenu% & index into ;� shortcutmenudata% ;dir$=localdir$ ;$a%=0 ;.!currentmenuptr%=shortcutmenu% ;8i%=0 ;Bȕ a%<linkdepth% ;L+currentmenuptr%+=(28+(dirlist%(a%)*24)) ;Vi%+=dirlist%(a%) ;` a%+=1 ;j� ;t ;~<� Initialise start menu user/system seperator to be null ;�+� (linkdepth%=0) StartMenuSeperator%=-1 ;� ;�9�PROCerror("MenuPtr = "+STR$~(currentmenuptr%)+CHR$0) ;�next%=0 ;�numberofitems%=0 ;� ;�8� Get number of items in current directory localdir$ ;�ȕ (next%<>-1) ;�$string%=dir$+�0 ;�Eș "OS_GBPB",10,string%,dblock%,1,next%,63,"*" � ,,,number%,next% ;�!� next%<>-1 numberofitems%+=1 ;�� < < <>�PROCerror("Directory size = "+STR$(numberofitems%)+CHR$0) < <('dirlist%(linkdepth%)=numberofitems% <29nextmenuptr%=currentmenuptr%+(28+(numberofitems%*24)) <<&dirptr%(linkdepth%+1)=nextmenuptr% <F <Plocali%=i% <Z� Build titleless menu <d,� title$="Menu "+STR$(currentdir%)+CHR$0 <n;� (linkdepth%=1 � �dirfilename$,1)=�(SysFilePrefix%)) � <x/ title$=�dirfilename$,�(dirfilename$)-1)+�0 <� � <� title$=dirfilename$+�0 <�� <� <�TitlePtr%=currentmenuptr% <�$TitlePtr%=title$ <�width%=(�(title$)-2)*16 <�"currentmenuptr%!12 = &00070207 <�currentmenuptr%!20=44 <�currentmenuptr%!24=0 <�ptr%=currentmenuptr%+28 <� <�next%=0 = =!NumberOfLinks%=numberofitems% = ="*ȕ (next%<NumberOfLinks% � DirScan%=�) =,ValidLoadFlag%=� =6/ș "OS_GBPB",10,dir$,dblock%,1,next%,63,"*" =@next%+=1 =Jlocali%=i% =T/� Get Object type (2 = directory, 1 = file) =^type% = dblock%?&10 =h� Get name of this object =ritem$=�getname(dblock%+&14) =|� Get file attributes =�"filetypeinfo%= !dblock% >>> 20 =�#filetype%=(!dblock% >> 8)� &FFF =� =�� Initialise menu object =�/!ptr%=8:� mflags = &80 means last menu item =�#ptr%!4=-1:� pointer to sub menu =�-� Store this filer object, whatever it is =�3!(shortcutmenudata%+(locali%*64)+32+28) = type% =�!� Is this object a directory? =�� (type% =2) � =�( � If so, then add to directory list =�1 $(shortcutmenudata%+(locali%*64)+32) = ""+�0 =�/ ptr%!4 = nextmenuptr%:� Pointer to submenu > � >) � This is a link and not a directory >, � PROCerror("Processing "+item$+CHR$0) >&" � Get filetype of link object >01 $string%=�GetLinkContents(dir$+"."+item$)+�0 >: >D0 � (�CheckValidDrive(�string(string%)) =1) � >N: ș "OS_File",17,string% � objecttype%,,linkloadaddr% >X) linktype%=(linkloadaddr%>>8) � &FFF >b) linktypeinfo%= linkloadaddr% >>> 20 >l � >v objecttype%=0 >� � >�U �PROCerror(FNGetLinkContents(dir$+"."+item$)+" is a "+STR$(linktypeinfo%)+CHR$0) >� � (objecttype%=0) � >�Y � PROCerror("Error : Link("+FNGetLinkContents(dir$+"."+item$)+") not found."+CHR$0) >�1 � Delete this link and rescan the directory >�= � Safety first - ensure this file is actually a link in >�C � case the <Start$Dir> system variable has become corrupt (!) >� � (filetype%=&af3) � >�q � PROCerror("Invalid link "+dir$+"."+item$+" has been found and will be deleted when you click OK."+CHR$0) >�% �("delete "+dir$+"."+item$+�0) >� DirScan%=� >� ValidLoadFlag%=� >� � ?� �error("Error: Another program has altered the <Start$Dir> system variable or someone has placed a non-link "+dir$+"."+item$+" into the links directory. Rerun the !Start application or remove the offending file from the !Start.Links directory."+�0) ? � ? ? � ?* ?4@ � $(shortcutmenudata%+(locali%*64)+32) = "Ssmall_dir"+CHR$0 ?> ?H � (objecttype%=1) � ?R( � This link is a pointer to a file ?\7 � PROCerror(FNstring(string%)+" is a file"+CHR$0) ?fG $(shortcutmenudata%+(locali%*64)+32) = "Ssmall_"+�~(linktype%)+�0 ?p � ?z ?�= � For some wierd reason the following two variables must ?�; � be evaluated outside of the objecttype test. I think ?�< � it must be something to do with the pipeline and/or a ?� � bug in the BASIC rom. ?� shriek%=�("!") ?� namestart%=�(�item$,1)) ?�1 � PROCerror(STR$(namestart%-shriek%)+CHR$0) ?� � (objecttype%=2) � ?�= � This link is a pointer to an application or directory ?�# � PROCerror(FirstChar$+CHR$0) ?� � (namestart%<>shriek%) � ?� � !ptr%=(!ptr%)+4 ?�= $(shortcutmenudata%+(locali%*64)+32) = "Ssmall_dir"+�0 @ � @< $(shortcutmenudata%+(locali%*64)+32) = "Ssm"+item$+�0 @ � @$ � @. @8� @B @L(� Build rest of menu item attributes @Vptr%!8=&7000313:� icon type @`E� IF (type%=2 AND objecttype%=0) ptr%!8=&7400313:REM Invalid line @j"� (addlink%=1) ptr%!8=&3000313 @t.$(shortcutmenudata%+(locali%*64))=item$+�0 @~,ptr%!12 = shortcutmenudata%+(locali%*64) @�/ptr%!16 = shortcutmenudata%+(locali%*64)+32 @�5ptr%!20 = 28:� menu item string buffer = 28 bytes @� @�� (linkdepth%=0) � @�?� (�item$,1,1)=�(SysFilePrefix%) � StartMenuSeperator%<0) � @�I� PROCerror("Name = "+FNstring(shortcutmenudata%+(locali%*64))+CHR$0) @�StartMenuSeperator%=locali% @�1� Does this item need a dotted line above it? @�-� (locali%>0) !(ptr%-24)=(!(ptr%-24)) + 2 @�� @�u� (locali%>=StartMenuSeperator% � StartMenuSeperator%>=0) $(shortcutmenudata%+(locali%*64))=�item$,�(item$)-1)+�0 @�� A A Aa%=(�(item$)+4)*16 A� a%>width% width%=a% A(ptr%+=24 A2 i%+=1 A<� AF AP'� Has this list got anything in it? AZ � (dirlist%(linkdepth%)>0) � Ad'!(ptr%-24)=&88:� Set last menu item An� Axwidth%=(�(title$)-2)*16 A�:� Make default first entry be greyed out label 'empty' A�item$="Empty"+�0 A�0$(shortcutmenudata%+(locali%*64)+32) = ""+�0 A�=!ptr%=&88:� mflags = &80 means last menu item 8=IssueWarn A�#ptr%!4=-1:� pointer to sub menu A�� (addlink%=1) � A�@ptr%!8=&3000313:� greyed out SELECTABLE icon type (Add link) A�� A�7ptr%!8=&2400B33:� greyed out UNSELECTABLE icon type A�� A�+$(shortcutmenudata%+(locali%*64))=item$ A�$(ptr%+12)=item$ A�,ptr%!12 = shortcutmenudata%+(locali%*64) B/ptr%!16 = shortcutmenudata%+(locali%*64)+32 B5ptr%!20 = 28:� menu item string buffer = 28 bytes Ba%=(�(item$)+4)*16 B"� a%>width% width%=a% B, i%+=1 B6� B@(� Does this menu fit on the screen ? BJ3�MenuExtent% = MenuX%+(width% * MenuDirection%) BT2�IF (MenuExtent%>OS_MX% OR MenuExtent%<0) THEN B^� title$="\"+title$ Bh� $TitlePtr% = title$ Br&� MenuDirection%=MenuDirection%*-1 B|� REM Adjust width B�,� IF ((LEN(title$)-2)*16) > width%) THEN B� � width%=(LEN(title$)-2)*16 B�� ENDIF B� �ENDIF B�currentmenuptr%!16=width% B� B� � ENDPROC B� B�� End of directory scanning B�� DirScan%=� B�'dirlist%(linkdepth%)=numberofitems% B� B�5� (dirlist%(linkdepth%)=0) dirlist%(linkdepth%)=1 C� C C7� ************************************************* C& � A Submenu is about to open C07� ************************************************* C:��submenu_warning CD6� ptr%,localdir$,depth%,index%,selection%,leaf$,i% CN1localdir$=StartPath$+".Users."+User$+".Links" CX8� Navigate menu index data to determine where we are Cbdepth%=0 Clindex%=0 Cvptr%=block%+32 C�&ȕ !((block%+32)+(depth%*4)) <> -1 C�(selection%=!((block%+32)+(depth%*4)) C�=leaf$=�string(shortcutmenudata%+((index%+selection%)*64)) C�&� Is this a system directory name? C�i%=selection% C�E� (depth%=0 � i%>=StartMenuSeperator% � StartMenuSeperator%>=0) � C�!leaf$=�(SysFilePrefix%)+leaf$ C�� C�!localdir$=localdir$+"."+leaf$ C�index%+=dirlist%(depth%) C� depth%+=1 C�� C�0�SingleDirectoryRead(localdir$,leaf$,depth%) D9ș"Wimp_CreateSubMenu",,block%!20,block%!24,block%!28 D� D D ;� ***************************************************** D*� Recursive Directory boot D4;� ***************************************************** D>��DirectoryBoot(localdir$) DH9� dir$, next%,type%, item$, objectcount%, currentdir% DR� number%,LD% D\� linktype%,linkdir$ Dfdir$=localdir$ Dpnext%=0 Dz�SYS"Hourglass_On" D�ȕ next%<>-1 D� D� �poll D� �poll D� D�Eș "OS_GBPB",10,dir$,bootblock%,1,next%,63,"*" � ,,,number%,next% D�/� Get Object type (2 = directory, 1 = file) D�type% = bootblock%?&10 D�� Get name of this object D�"item$=�getname(bootblock%+&14) D�,� Has this directory got anything in it? D�� (next%<>-1) � D�' � Is this a directory (ie type=2) E � (type%=2) � E% �DirectoryBoot(dir$+"."+item$) E � E$0 � Must be a link to a file or application E.4 � What type of thing does this link point to? E8) � PROCerror("Opening "+dir$+CHR$0) EB LD%=�(dir$+"."+item$+�0) EL linkdir$="" EV � E` LD$=�(�#LD%) Ej" � (�(LD$)>31) linkdir$+=LD$ Et � �(LD$)<32 � �#LD% E~ �#LD% E�" � What type is the linkdir? E� $bootstring%=linkdir$+�0 E�* � (�CheckValidDrive(linkdir$) =1) � E�/ ș "XOS_File",5,bootstring% � linktype% E�* � (�item$,1)="!" � linktype%<>2) � E�? � Must be either a file or app or dir so let's boot it E�@ � If directory, only boot if begin with a ! (Save time) E�/ $clistring = "Filer_Boot "+linkdir$+�0 E� ș "XOS_CLI", clistring E� � E� � E� � F� F � F�SYS"Hourglass_Off" F� F( F2ݤCheckValidDrive(isvpath$) F<!� fs_drive$, pptr%, char$, a% FF8� Check that isvpath$ resides on a valid file system FP� and a valid drive. FZ(� If not then return 0 else return 1 Fdpptr%=1 Fnfs_drive$="" Fx� F�char$=�isvpath$,pptr%,1) F�,� (char$<>".") fs_drive$=fs_drive$+char$ F�pptr%=pptr%+1 F�%� (pptr%>�(isvpath$) � char$=".") F�8� Check fs_drive$ with all currently invalid devices F�a%=0 F�ȕ(a%<InvalidDriveCount%) F�;� (fs_drive$=InvalidDrive$(a%)) a%=InvalidDriveCount%+1 F� a%+=1 F�� F�+� return if it matches an invalid drive F�"� (a%>InvalidDriveCount%) � =0 F�� Is this device valid? G$clistring=fs_drive$+�0 G&ș"XOS_File",5,clistring � result% G� (result%<=8192) � G" � This is a valid drive G, =1 G6� G@#� Update list of invalid drives GJ1InvalidDrive$(InvalidDriveCount%) = fs_drive$ GTInvalidDriveCount%+=1 G^=0 Gh Gr%ݤGetLinkContents(glinkfilename$) G|� linkdir$,LD% G� LD%=�(glinkfilename$+�0) G� linkdir$="" G� � G� LD$=�(�#LD%) G�" � (�(LD$)>31) linkdir$+=LD$ G� � �(LD$)<32 � �#LD% G� �#LD% G� =linkdir$ G� G� G�*� Extract the wstring stored at addr%. G�� �getname(addr%) G�� b$ Hȕ ?addr%>31 Hb$+=�(?addr%) Haddr%+=1 H&� H0=b$ H: HD,� ************************************** HN!� Click on shortcut menu list HX,� ************************************** Hb��shortcutmenuselect HlB� currentmenuptr%,dir$,linkdir$,dropdir$,currentdropdir$,leaf$ Hv� ReOpenFlag% H�� IconFlagsAddr% H� H�ReOpenFlag%=� H�,dir$=StartPath$+".Users."+User$+".Links" H�dropdir$=dir$ H�currentdropdir$=dir$ H�!currentmenuptr%=shortcutmenu% H� globalmenuptr%=shortcutmenu% H�,� block%+00 is selection number of menu, H�nestlevel%=0 H�sel1%=block%!nestlevel% H� H�;� Recurse menu directory pointers until leaf node found I� I$selection%=block%!(nestlevel%*4) I,nextselection%=block%!((nestlevel%+1)*4) I :�PROCerror("Menu Selection = "+STR$(selection%)+CHR$0) I*9� Get pointer to icon definition from menu definition I47submenuptr%=!(currentmenuptr%+28+(selection%*24)+4) I>5dataptr%=!(currentmenuptr%+28+(selection%*24)+12) IHleaf$=�string(dataptr%) IR!� Is this a system file name? I\ Ifm� (selection%>=StartMenuSeperator% � StartMenuSeperator%>=0 � nestlevel%=0) leaf$=�(SysFilePrefix%)+leaf$ Ip Izcurrentdropdir$=dropdir$ I�� (selection%<>-1) � I� dir$=dir$+"."+leaf$ I�1 � Is this menu entry a pointer to a submenu? I� � (submenuptr%<>-1) � I� dropdir$=dropdir$+"."+leaf$ I� currentmenuptr%=submenuptr% I� nestlevel%+=1 I� � I�� I�� nextselection%=-1 I� I�� (addlink%=1) � I�I� PROCerror("Adding shortcut["+newlinkleaf$+"] into "+dropdir$+CHR$0) J$�addnewshortcut(currentdropdir$) J� J � Is this a valid object? J$ � (submenuptr%=-1) � J. � Is the ALT key pressed? J8 � If so delete this link JB � (�-3) � JL �("delete "+dir$+�0) JV � Alter menu structure J`: IconFlagsAddr%=currentmenuptr%+28+8+(selection%*24) JjC !IconFlagsAddr% = (!IconFlagsAddr%)+(2^22):� Grey out sprite Jt= !IconFlagsAddr% = !IconFlagsAddr% � &ffffff:� Grey out J~8 !IconFlagsAddr% = !IconFlagsAddr%+&1000000:� text J� � J�/ � Get the desktop filer to run this link J�/ dir$="Filer_Run "+�GetLinkContents(dir$) J�' � PROCerror("OSCLI "+dir$+CHR$0) J� �(dir$+�0) J� � J� � J�< � Check if ADJUST pressed in which case, reprint menus. J�% ș"Wimp_GetPointerInfo",,block2% J� button%=block2%!8 J�� button%=1 ReOpenFlag%=� J� K� (ReOpenFlag%) � K ! �showmenu(shortcutmenu%,0,0) K � K3 IconBarMenuOpen%=0:� Reenable icon bar tooltip K(� K2� K<� KF KP��click_info(button%) KZȎ button% � Kd7� 2:�showmenu(main_menu%,!block%-64, (block%!4)+32) Kn� Kx� K� K���menuselect K�� Skronky% K�Skronky%=currentmenu% K�Ȏ Skronky% � K� � main_menu%:�mainmenuselect K�'� shortcutmenu%:�shortcutmenuselect K�� K�� K� K���mainmenuselect K�2� block%+00 is selection number of first menu, K�8� block%+04 is selection number of second level etc. L sel1%=!block%:sel2%=block%!4 L#ș"Wimp_GetPointerInfo",,block% Lbutton%=block%!8 L"Ȏ sel1% � L,� 0:�OpenInfoBox L6� 1:�clear L@� 2:�smash LJ� 3:�OpenLinks LT� 4:quit%=� L^� Lh;� Check if ADJUST pressed in which case, reprint menus. Lr� button%=1 � L|�showmenu(main_menu%,0,0) L�� L�2IconBarMenuOpen%=0:� Reenable icon bar tooltip L�� L�� L� L���OpenLinks L�>�("Filer_Opendir "+StartPath$+".Users."+User$+".Links"+�0) L�� L� L���showmenu(menu%,mx%,my%) L�currentmenu%=menu% L�;ș"Wimp_CreateMenu",,menu%,mx%,my% � currentmenuhandle% L�� M M9� *************************************************** M M&��clear M03X%=�(StartPath$+".Users."+User$+".~~Open"):�#X% M:4X%=�(StartPath$+".Users."+User$+".~~Close"):�#X% MD�loadcache MN� MX Mb=� ******************************************************* Ml Mv��smash M��("Close") M�ș"Hourglass_Smash" M�� M� M�=� ******************************************************* M� M�)� Tell WIMP to initialise a new menu. M�?� This should really be done by loading in a MENU template. M���setupmenu(menu%) M�� title$,num%:$menu%=title$ M�width%=(�(title$)-2)*16 M�-menu%!12=&00070207:menu%!20=44:menu%!24=0 M�ptr%=menu%+28:� i%=1�num% N� mflags%,subptr%,item$ N !ptr%=mflags%:ptr%!4=subptr% N$ptr%!8=&7000021:$(ptr%+12)=item$ N a%=(�(item$)+1)*16 N*� a%>width% width%=a% N4ptr%+=24:� N>menu%!16=width% NH� NR N\;� ***************************************************** Nf Np"� function to deal with errors Nz��error(err$) N�!errorblock%=255 N�$(errorblock%+4)=err$+�0 N�,ș "Wimp_ReportError",errorblock%,1,app$ N�� N� N�;� ***************************************************** N���OpenFSView N� N�� N�;� ***************************************************** N���CloseFSView N� N�� O;� ***************************************************** �
00000000 0d 00 0a 35 f4 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |...5. **********| 00000010 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 00000030 2a 2a 2a 2a 2a 0d 00 14 15 f4 20 4e 61 6d 65 20 |*****..... Name | 00000040 20 20 20 3a 20 53 74 61 72 74 0d 00 1e 14 f4 20 | : Start..... | 00000050 56 65 72 73 69 6f 6e 20 3a 20 34 2e 30 30 0d 00 |Version : 4.00..| 00000060 28 32 f4 20 50 75 72 70 6f 73 65 20 3a 20 4d 61 |(2. Purpose : Ma| 00000070 6b 65 20 52 69 73 63 4f 53 20 44 65 73 6b 74 6f |ke RiscOS Deskto| 00000080 70 20 6d 6f 72 65 20 65 66 66 69 63 69 65 6e 74 |p more efficient| 00000090 0d 00 32 1b f4 20 41 75 74 68 6f 72 20 20 3a 20 |..2.. Author : | 000000a0 42 61 72 6e 79 20 53 68 6f 72 74 0d 00 3c 27 f4 |Barny Short..<'.| 000000b0 20 44 61 74 65 20 20 20 20 3a 20 54 68 75 20 31 | Date : Thu 1| 000000c0 32 74 68 20 53 65 70 74 65 6d 62 65 72 20 31 39 |2th September 19| 000000d0 39 36 0d 00 46 35 f4 20 2a 2a 2a 2a 2a 2a 2a 2a |96..F5. ********| 000000e0 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 00000100 2a 2a 2a 2a 2a 2a 2a 0d 00 50 18 f4 20 52 65 76 |*******..P.. Rev| 00000110 69 73 69 6f 6e 20 68 69 73 74 6f 72 79 20 3a 0d |ision history :.| 00000120 00 5a 34 f4 20 32 34 2d 41 75 67 2d 31 39 39 37 |.Z4. 24-Aug-1997| 00000130 20 20 20 41 64 64 65 64 20 51 75 69 63 6b 66 69 | Added Quickfi| 00000140 6c 65 20 49 63 6f 6e 20 74 6f 20 69 63 6f 6e 62 |le Icon to iconb| 00000150 61 72 2e 0d 00 64 31 f4 20 20 20 20 20 20 20 20 |ar...d1. | 00000160 20 20 20 20 20 20 20 43 6c 69 63 6b 69 6e 67 20 | Clicking | 00000170 6f 6e 20 69 63 6f 6e 20 6f 70 65 6e 2f 63 6c 6f |on icon open/clo| 00000180 73 65 73 2e 0d 00 6e 2d f4 20 32 35 2d 41 75 67 |ses...n-. 25-Aug| 00000190 2d 31 39 39 37 20 20 20 41 64 64 65 64 20 53 68 |-1997 Added Sh| 000001a0 6f 72 74 43 75 74 73 20 66 61 63 69 6c 69 74 79 |ortCuts facility| 000001b0 2e 0d 00 78 32 f4 20 20 20 20 20 20 20 20 20 20 |...x2. | 000001c0 20 20 20 20 20 53 69 6d 69 6c 61 72 20 66 65 61 | Similar fea| 000001d0 74 75 72 65 20 74 6f 20 57 69 6e 39 35 20 74 6f |ture to Win95 to| 000001e0 6f 6c 2e 0d 00 82 36 f4 20 30 34 2d 53 65 70 2d |ol....6. 04-Sep-| 000001f0 31 39 39 37 20 20 20 41 64 64 65 64 20 6e 65 73 |1997 Added nes| 00000200 74 65 64 20 64 69 72 65 63 74 6f 72 69 65 73 20 |ted directories | 00000210 66 61 63 69 6c 69 74 79 2e 0d 00 8c 30 f4 20 20 |facility....0. | 00000220 20 20 20 20 20 20 20 20 20 20 20 20 20 43 68 61 | Cha| 00000230 6e 67 65 64 20 53 68 69 66 74 2b 49 63 6f 6e 62 |nged Shift+Iconb| 00000240 61 72 4d 65 6e 75 20 74 6f 0d 00 96 2f f4 20 20 |arMenu to.../. | 00000250 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 63 | inc| 00000260 6c 75 64 65 20 45 64 69 74 4c 69 6e 6b 73 20 66 |lude EditLinks f| 00000270 61 63 69 6c 69 74 79 2e 0d 00 a0 35 f4 20 20 20 |acility....5. | 00000280 20 20 20 20 20 20 20 20 20 20 20 20 43 68 61 6e | Chan| 00000290 67 65 64 20 6e 61 6d 65 20 74 6f 20 53 74 61 72 |ged name to Star| 000002a0 74 20 61 6e 64 20 63 68 61 6e 67 65 64 0d 00 aa |t and changed...| 000002b0 30 f4 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |0. | 000002c0 20 73 68 6f 72 74 63 75 74 73 20 64 69 72 65 63 | shortcuts direc| 000002d0 74 6f 72 79 20 74 6f 20 4c 69 6e 6b 73 0d 00 b4 |tory to Links...| 000002e0 2f f4 20 30 35 2d 53 65 70 2d 31 39 39 37 20 20 |/. 05-Sep-1997 | 000002f0 20 43 68 61 6e 67 65 64 20 77 61 79 20 77 69 6e | Changed way win| 00000300 64 6f 77 20 63 61 63 68 65 20 69 73 0d 00 be 35 |dow cache is...5| 00000310 f4 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |. | 00000320 61 64 6d 69 6e 69 73 74 65 72 65 64 2e 20 42 65 |administered. Be| 00000330 63 61 6d 65 20 76 65 72 73 69 6f 6e 20 32 2e 30 |came version 2.0| 00000340 30 0d 00 c8 31 f4 20 30 36 2d 53 65 70 2d 31 39 |0...1. 06-Sep-19| 00000350 39 37 20 20 20 43 68 61 6e 67 65 64 20 66 6f 72 |97 Changed for| 00000360 6d 61 74 20 6f 66 20 6c 69 6e 6b 20 66 69 6c 65 |mat of link file| 00000370 73 2e 0d 00 d2 32 f4 20 20 20 20 20 20 20 20 20 |s....2. | 00000380 20 20 20 20 20 20 41 64 64 65 64 20 65 6e 74 69 | Added enti| 00000390 72 65 20 62 6f 6f 74 20 61 74 20 73 74 61 72 74 |re boot at start| 000003a0 20 75 70 2e 0d 00 dc 30 f4 20 30 37 2d 53 65 70 | up....0. 07-Sep| 000003b0 2d 31 39 39 37 20 20 20 46 69 78 65 64 20 61 20 |-1997 Fixed a | 000003c0 6d 6f 74 68 65 72 20 6f 66 20 61 20 62 75 67 20 |mother of a bug | 000003d0 74 68 61 74 0d 00 e6 35 f4 20 20 20 20 20 20 20 |that...5. | 000003e0 20 20 20 20 20 20 20 20 70 72 6f 62 61 62 6c 79 | probably| 000003f0 20 68 61 73 20 73 6f 6d 65 74 68 69 6e 67 20 74 | has something t| 00000400 6f 20 64 6f 20 77 69 74 68 0d 00 f0 31 f4 20 20 |o do with...1. | 00000410 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 65 | the| 00000420 20 70 69 70 65 6c 69 6e 65 2e 20 41 6c 73 6f 20 | pipeline. Also | 00000430 61 64 64 65 64 20 6d 75 63 68 0d 00 fa 2e f4 20 |added much..... | 00000440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f | mo| 00000450 72 65 20 69 6e 74 65 6c 6c 69 67 65 6e 74 20 66 |re intelligent f| 00000460 69 6c 65 20 74 79 70 65 0d 01 04 1d f4 20 20 20 |ile type..... | 00000470 20 20 20 20 20 20 20 20 20 20 20 20 63 68 65 63 | chec| 00000480 6b 69 6e 67 2e 0d 01 0e 32 f4 20 31 34 2d 53 65 |king....2. 14-Se| 00000490 70 2d 31 39 39 37 20 20 20 47 65 6e 65 72 61 6c |p-1997 General| 000004a0 20 69 6d 70 72 6f 76 65 6d 65 6e 74 73 20 72 65 | improvements re| 000004b0 67 61 72 64 69 6e 67 0d 01 18 2c f4 20 20 20 20 |garding...,. | 000004c0 20 20 20 20 20 20 20 20 20 20 20 64 72 61 67 27 | drag'| 000004d0 6e 27 64 72 6f 70 20 61 6e 64 20 74 6f 6f 6c 74 |n'drop and toolt| 000004e0 69 70 2e 0d 01 22 29 f4 20 30 34 2d 4e 6f 76 2d |ip..."). 04-Nov-| 000004f0 31 39 39 37 20 20 20 43 68 61 6e 67 65 64 20 69 |1997 Changed i| 00000500 63 6f 6e 20 62 61 72 20 69 63 6f 6e 0d 01 2c 31 |con bar icon..,1| 00000510 f4 20 30 35 2d 4e 6f 76 2d 31 39 39 37 20 20 20 |. 05-Nov-1997 | 00000520 41 64 64 65 64 20 74 68 65 20 7e 20 68 69 73 74 |Added the ~ hist| 00000530 6f 72 79 20 64 69 72 65 63 74 6f 72 79 0d 01 36 |ory directory..6| 00000540 31 f4 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |1. | 00000550 20 74 6f 20 63 61 74 63 68 20 61 6c 6c 20 64 6f | to catch all do| 00000560 75 62 6c 65 20 63 6c 69 63 6b 73 20 6f 6e 0d 01 |uble clicks on..| 00000570 40 1f f4 20 20 20 20 20 20 20 20 20 20 20 20 20 |@.. | 00000580 20 20 66 69 6c 65 20 69 63 6f 6e 73 2e 0d 01 4a | file icons...J| 00000590 34 f4 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |4. | 000005a0 20 41 6c 73 6f 20 61 64 64 65 64 20 61 20 7e 7e | Also added a ~~| 000005b0 20 64 69 72 65 63 74 6f 72 79 2e 20 43 61 6e 27 | directory. Can'| 000005c0 74 0d 01 54 23 f4 20 20 20 20 20 20 20 20 20 20 |t..T#. | 000005d0 20 20 20 20 20 74 68 69 6e 6b 20 77 68 61 74 20 | think what | 000005e0 66 6f 72 2e 0d 01 5e 32 f4 20 20 20 20 20 20 20 |for...^2. | 000005f0 20 20 20 20 20 20 20 20 46 69 78 65 64 20 74 68 | Fixed th| 00000600 65 20 45 4d 50 54 59 20 64 69 72 65 63 74 6f 72 |e EMPTY director| 00000610 79 20 62 75 67 2e 0d 01 68 33 f4 20 20 20 20 20 |y bug...h3. | 00000620 20 20 20 20 20 20 20 20 20 20 43 68 61 6e 67 65 | Change| 00000630 64 20 61 63 74 69 6f 6e 20 6f 66 20 54 4f 4f 4c |d action of TOOL| 00000640 5f 54 49 50 20 77 68 65 6e 0d 01 72 33 f4 20 20 |_TIP when..r3. | 00000650 20 20 20 20 20 20 20 20 20 20 20 20 20 70 6f 69 | poi| 00000660 6e 74 65 72 20 6d 6f 76 65 64 20 6f 76 65 72 20 |nter moved over | 00000670 69 74 20 73 6f 20 6e 6f 77 20 69 74 0d 01 7c 29 |it so now it..|)| 00000680 f4 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |. | 00000690 67 65 74 73 20 27 70 75 73 68 65 64 27 20 61 72 |gets 'pushed' ar| 000006a0 6f 75 6e 64 2e 0d 01 86 35 f4 20 30 36 2d 4e 6f |ound....5. 06-No| 000006b0 76 2d 31 39 39 37 20 20 20 43 68 61 6e 67 65 64 |v-1997 Changed| 000006c0 20 68 6f 77 20 64 65 73 74 69 6e 61 74 69 6f 6e | how destination| 000006d0 20 64 69 72 65 63 74 6f 72 79 0d 01 90 34 f4 20 | directory...4. | 000006e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 73 | is| 000006f0 20 73 65 6c 65 63 74 65 64 20 66 6f 72 20 41 44 | selected for AD| 00000700 44 4e 45 57 4c 49 4e 4b 2e 20 55 73 65 72 0d 01 |DNEWLINK. User..| 00000710 9a 35 f4 20 20 20 20 20 20 20 20 20 20 20 20 20 |.5. | 00000720 20 20 6e 6f 77 20 68 61 73 20 74 6f 20 65 78 70 | now has to exp| 00000730 6c 69 63 69 74 6c 79 20 6d 6f 76 65 20 74 6f 20 |licitly move to | 00000740 74 68 65 0d 01 a4 22 f4 20 20 20 20 20 20 20 20 |the...". | 00000750 20 20 20 20 20 20 20 72 65 71 75 69 72 65 64 20 | required | 00000760 6d 65 6e 75 2e 0d 01 ae 32 f4 20 20 20 20 20 20 |menu....2. | 00000770 20 20 20 20 20 20 20 20 20 43 72 65 61 74 65 64 | Created| 00000780 20 73 79 73 74 65 6d 20 64 69 72 65 63 74 6f 72 | system director| 00000790 79 73 20 74 68 61 74 0d 01 b8 34 f4 20 20 20 20 |ys that...4. | 000007a0 20 20 20 20 20 20 20 20 20 20 20 62 65 67 69 6e | begin| 000007b0 20 77 69 74 68 20 61 20 7e 20 73 79 6d 62 6f 6c | with a ~ symbol| 000007c0 2e 20 54 68 65 73 65 20 61 72 65 0d 01 c2 31 f4 |. These are...1.| 000007d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 | u| 000007e0 70 64 61 74 65 64 20 77 69 74 68 20 61 20 68 69 |pdated with a hi| 000007f0 73 74 6f 72 79 20 6f 66 20 74 68 65 0d 01 cc 28 |story of the...(| 00000800 f4 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |. | 00000810 64 65 73 6b 74 6f 70 20 66 69 6c 65 72 20 75 73 |desktop filer us| 00000820 61 67 65 2e 0d 01 d6 32 f4 20 30 37 2d 4e 6f 76 |age....2. 07-Nov| 00000830 2d 31 39 39 37 20 20 20 42 75 69 6c 74 20 74 68 |-1997 Built th| 00000840 65 20 41 6c 69 61 73 24 4c 69 6e 6b 20 72 75 6e |e Alias$Link run| 00000850 20 74 6f 6f 6c 2e 0d 01 e0 31 f4 20 20 20 20 20 | tool....1. | 00000860 20 20 20 20 20 20 20 20 20 20 46 69 78 65 64 20 | Fixed | 00000870 61 20 53 79 73 46 69 6c 65 50 72 65 66 69 78 20 |a SysFilePrefix | 00000880 72 65 6c 61 74 65 64 0d 01 ea 2b f4 20 20 20 20 |related...+. | 00000890 20 20 20 20 20 20 20 20 20 20 20 73 68 6f 72 74 | short| 000008a0 63 75 74 6d 65 6e 75 73 65 6c 65 63 74 20 62 75 |cutmenuselect bu| 000008b0 67 2e 0d 01 f4 31 f4 20 20 20 20 20 20 20 20 20 |g....1. | 000008c0 20 20 20 20 20 20 41 64 64 65 64 20 69 63 6f 6e | Added icon| 000008d0 20 62 61 72 20 74 6f 67 67 6c 65 20 66 65 61 74 | bar toggle feat| 000008e0 75 72 65 0d 01 fe 35 f4 20 20 20 20 20 20 20 20 |ure...5. | 000008f0 20 20 20 20 20 20 20 77 68 65 6e 20 6d 6f 75 73 | when mous| 00000900 65 20 68 69 74 73 20 62 6f 74 74 6f 6d 20 6f 66 |e hits bottom of| 00000910 20 73 63 72 65 65 6e 2e 0d 02 08 31 f4 20 20 20 | screen....1. | 00000920 20 20 20 20 20 20 20 20 20 20 20 20 41 64 64 65 | Adde| 00000930 64 20 41 4c 54 2d 53 54 41 52 54 5f 4d 45 4e 55 |d ALT-START_MENU| 00000940 20 63 6c 69 63 6b 20 74 6f 0d 02 12 33 f4 20 20 | click to...3. | 00000950 20 20 20 20 20 20 20 20 20 20 20 20 20 65 66 66 | eff| 00000960 69 63 69 65 6e 74 6c 79 20 64 65 6c 65 74 65 20 |iciently delete | 00000970 69 74 65 6d 73 20 69 6e 20 74 68 65 0d 02 1c 21 |items in the...!| 00000980 f4 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |. | 00000990 73 74 61 72 74 75 70 20 6d 65 6e 75 2e 0d 02 26 |startup menu...&| 000009a0 34 f4 20 30 39 2d 4e 6f 76 2d 31 39 39 37 20 20 |4. 09-Nov-1997 | 000009b0 20 41 64 64 65 64 20 61 75 74 6f 20 63 61 73 63 | Added auto casc| 000009c0 61 64 69 6e 67 20 66 6f 72 20 64 65 73 6b 74 6f |ading for deskto| 000009d0 70 0d 02 30 33 f4 20 20 20 20 20 20 20 20 20 20 |p..03. | 000009e0 20 20 20 20 20 77 69 6e 64 6f 77 73 2e 20 53 6f | windows. So| 000009f0 6d 65 20 77 69 6e 64 6f 77 73 20 61 72 65 20 6e |me windows are n| 00000a00 65 76 65 72 0d 02 3a 2d f4 20 20 20 20 20 20 20 |ever..:-. | 00000a10 20 20 20 20 20 20 20 20 61 75 74 6f 20 63 61 73 | auto cas| 00000a20 63 61 64 65 64 2e 20 54 68 65 73 65 20 61 72 65 |caded. These are| 00000a30 3a 0d 02 44 29 f4 20 20 20 20 20 20 20 20 20 20 |:..D). | 00000a40 20 20 20 20 20 61 29 20 54 68 65 20 54 6f 6f 6c | a) The Tool| 00000a50 74 69 70 20 77 69 6e 64 6f 77 0d 02 4e 2f f4 20 |tip window..N/. | 00000a60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 29 | b)| 00000a70 20 53 74 61 72 74 27 73 20 64 75 6d 6d 79 62 61 | Start's dummyba| 00000a80 63 6b 20 77 69 6e 64 6f 77 0d 02 58 34 f4 20 20 |ck window..X4. | 00000a90 20 20 20 20 20 20 20 20 20 20 20 20 20 63 29 20 | c) | 00000aa0 41 6e 79 20 77 69 6e 64 6f 77 20 74 6f 67 67 6c |Any window toggl| 00000ab0 65 64 20 66 75 6c 6c 20 73 69 7a 65 2c 0d 02 62 |ed full size,..b| 00000ac0 2c f4 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |,. | 00000ad0 20 20 20 20 74 68 61 74 20 68 61 73 20 69 6e 70 | that has inp| 00000ae0 75 74 20 66 6f 63 75 73 2c 0d 02 6c 2e f4 20 20 |ut focus,..l.. | 00000af0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00000b00 61 6e 64 20 61 20 74 6f 67 67 6c 65 20 73 69 7a |and a toggle siz| 00000b10 65 20 69 63 6f 6e 2e 0d 02 76 33 f4 20 30 39 2d |e icon...v3. 09-| 00000b20 4e 6f 76 2d 31 39 39 37 20 20 20 41 64 64 65 64 |Nov-1997 Added| 00000b30 20 61 6e 69 6d 61 74 65 64 20 69 63 6f 6e 62 61 | animated iconba| 00000b40 72 20 69 63 6f 6e 20 61 6e 64 0d 02 80 2a f4 20 |r icon and...*. | 00000b50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 6c | al| 00000b60 74 65 72 6e 61 74 69 76 65 20 74 6f 6f 6c 20 74 |ternative tool t| 00000b70 69 70 73 2e 0d 02 8a 30 f4 20 31 31 2d 4e 6f 76 |ips....0. 11-Nov| 00000b80 2d 31 39 39 37 20 20 20 41 64 64 65 64 20 73 65 |-1997 Added se| 00000b90 6c 65 63 74 69 76 65 20 63 61 73 63 61 64 69 6e |lective cascadin| 00000ba0 67 20 6f 66 0d 02 94 33 f4 20 20 20 20 20 20 20 |g of...3. | 00000bb0 20 20 20 20 20 20 20 20 77 69 6e 64 6f 77 73 20 | windows | 00000bc0 74 6f 20 72 65 64 75 63 65 20 64 69 66 66 69 63 |to reduce diffic| 00000bd0 75 6c 74 79 20 69 6e 0d 02 9e 30 f4 20 20 20 20 |ulty in...0. | 00000be0 20 20 20 20 20 20 20 20 20 20 20 75 73 69 6e 67 | using| 00000bf0 20 6d 65 6e 75 73 2e 20 43 68 61 6e 67 65 64 20 | menus. Changed | 00000c00 49 63 6f 6e 62 61 72 0d 02 a8 32 f4 20 20 20 20 |Iconbar...2. | 00000c10 20 20 20 20 20 20 20 20 20 20 20 62 75 74 74 6f | butto| 00000c20 6e 20 75 73 61 67 65 20 61 6e 64 20 27 61 6c 74 |n usage and 'alt| 00000c30 65 72 6e 61 74 69 76 65 27 0d 02 b2 1e f4 20 20 |ernative'..... | 00000c40 20 20 20 20 20 20 20 20 20 20 20 20 20 74 6f 6f | too| 00000c50 6c 20 74 69 70 73 2e 0d 02 bc 35 f4 20 31 39 2d |l tips....5. 19-| 00000c60 4e 6f 76 2d 31 39 39 37 20 20 20 41 64 64 65 64 |Nov-1997 Added| 00000c70 20 73 65 6e 73 69 62 6c 65 20 74 61 73 6b 20 62 | sensible task b| 00000c80 61 72 20 74 6f 6f 6c 20 74 69 70 2e 0d 02 c6 30 |ar tool tip....0| 00000c90 f4 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |. | 00000ca0 49 6e 63 6c 75 64 65 64 20 53 74 61 72 74 50 61 |Included StartPa| 00000cb0 74 68 24 20 74 6f 20 67 75 61 72 64 0d 02 d0 33 |th$ to guard...3| 00000cc0 f4 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |. | 00000cd0 61 67 61 69 6e 73 74 20 74 68 65 20 3c 53 74 61 |against the <Sta| 00000ce0 72 74 24 44 69 72 3e 20 67 65 74 74 69 6e 67 0d |rt$Dir> getting.| 00000cf0 02 da 1e f4 20 20 20 20 20 20 20 20 20 20 20 20 |.... | 00000d00 20 20 20 63 6f 72 72 75 70 74 65 64 2e 0d 02 e4 | corrupted....| 00000d10 2d f4 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |-. | 00000d20 20 41 64 64 65 64 20 65 78 74 72 61 20 63 68 65 | Added extra che| 00000d30 63 6b 73 20 62 65 66 6f 72 65 0d 02 ee 30 f4 20 |cks before...0. | 00000d40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65 | de| 00000d50 6c 65 74 65 69 6e 67 20 61 75 74 6f 2d 63 72 65 |leteing auto-cre| 00000d60 61 74 65 20 6c 69 6e 6b 73 2e 0d 02 f8 30 f4 20 |ate links....0. | 00000d70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 41 75 | Au| 00000d80 74 6f 20 65 6e 73 75 72 65 20 7e 20 64 69 72 65 |to ensure ~ dire| 00000d90 63 74 6f 72 79 73 20 61 72 65 0d 03 02 33 f4 20 |ctorys are...3. | 00000da0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 | th| 00000db0 65 72 65 20 77 68 65 6e 65 76 65 72 20 74 68 65 |ere whenever the| 00000dc0 79 20 61 72 65 20 6e 65 65 64 65 64 2e 0d 03 0c |y are needed....| 00000dd0 31 f4 20 32 31 2d 4e 6f 76 2d 31 39 39 37 20 20 |1. 21-Nov-1997 | 00000de0 20 44 69 73 61 62 6c 65 64 20 77 69 6e 64 6f 77 | Disabled window| 00000df0 20 72 65 70 6f 73 69 74 69 6f 6e 69 6e 67 0d 03 | repositioning..| 00000e00 16 31 f4 20 20 20 20 20 20 20 20 20 20 20 20 20 |.1. | 00000e10 20 20 77 68 65 6e 20 61 20 6d 65 6e 75 20 69 73 | when a menu is| 00000e20 20 64 69 73 70 6c 61 79 65 64 20 77 69 74 68 0d | displayed with.| 00000e30 03 20 24 f4 20 20 20 20 20 20 20 20 20 20 20 20 |. $. | 00000e40 20 20 20 4d 65 6e 75 49 73 4f 70 65 6e 46 6c 61 | MenuIsOpenFla| 00000e50 67 25 2e 0d 03 2a 30 f4 20 32 31 2d 4e 6f 76 2d |g%...*0. 21-Nov-| 00000e60 31 39 39 37 20 20 20 41 64 64 65 64 20 77 69 6e |1997 Added win| 00000e70 64 6f 77 20 64 72 69 66 74 69 6e 67 2e 20 41 64 |dow drifting. Ad| 00000e80 64 65 64 0d 03 34 33 f4 20 20 20 20 20 20 20 20 |ded..43. | 00000e90 20 20 20 20 20 20 20 64 72 61 67 61 62 6c 65 20 | dragable | 00000ea0 79 65 73 2f 6e 6f 20 69 63 6f 6e 73 20 74 6f 20 |yes/no icons to | 00000eb0 77 69 6e 64 6f 77 0d 03 3e 25 f4 20 20 20 20 20 |window..>%. | 00000ec0 20 20 20 20 20 20 20 20 20 20 63 61 63 68 65 20 | cache | 00000ed0 6d 61 6e 61 67 65 6d 65 6e 74 2e 0d 03 48 2c f4 |management...H,.| 00000ee0 20 32 32 2d 4e 6f 76 2d 31 39 39 37 20 20 20 45 | 22-Nov-1997 E| 00000ef0 6e 73 75 72 65 64 20 61 6c 6c 20 77 69 6e 64 6f |nsured all windo| 00000f00 77 73 20 77 65 72 65 0d 03 52 34 f4 20 20 20 20 |ws were..R4. | 00000f10 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 70 65 | prope| 00000f20 72 6c 79 20 63 61 73 63 61 64 65 64 2c 20 65 76 |rly cascaded, ev| 00000f30 65 6e 20 69 66 20 73 74 69 6c 6c 0d 03 5c 30 f4 |en if still..\0.| 00000f40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 | w| 00000f50 61 69 74 69 6e 67 20 66 6f 72 20 61 20 73 74 61 |aiting for a sta| 00000f60 74 65 20 74 6f 20 6f 63 63 75 72 0d 03 66 30 f4 |te to occur..f0.| 00000f70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 | w| 00000f80 68 65 6e 20 74 68 65 79 20 77 65 72 65 20 61 6c |hen they were al| 00000f90 6c 6f 77 65 64 20 74 6f 20 62 65 0d 03 70 1a f4 |lowed to be..p..| 00000fa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d | m| 00000fb0 6f 76 65 64 2e 0d 03 7a 35 f4 20 2a 2a 2a 2a 2a |oved...z5. *****| 00000fc0 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 00000fe0 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d 03 84 0b f4 20 |**********..... | 00000ff0 4e 6f 74 65 3a 0d 03 8e 33 f4 20 20 20 20 57 68 |Note:...3. Wh| 00001000 65 6e 20 72 75 6e 6e 69 6e 67 20 74 68 69 73 20 |en running this | 00001010 70 72 6f 67 72 61 6d 2c 20 69 74 20 69 73 20 69 |program, it is i| 00001020 6d 70 6f 72 74 61 6e 74 0d 03 98 32 f4 20 20 20 |mportant...2. | 00001030 20 74 6f 20 65 6e 73 75 72 65 20 74 68 61 74 20 | to ensure that | 00001040 74 68 65 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e |the correspondin| 00001050 67 20 21 42 6f 6f 74 20 6f 72 0d 03 a2 32 f4 20 |g !Boot or...2. | 00001060 20 20 20 21 72 75 6e 20 66 69 6c 65 20 69 73 20 | !run file is | 00001070 72 75 6e 20 61 74 20 74 68 65 20 73 61 6d 65 20 |run at the same | 00001080 74 69 6d 65 20 62 65 63 61 75 73 65 0d 03 ac 34 |time because...4| 00001090 f4 20 20 20 20 74 68 65 79 20 65 6e 73 75 72 65 |. they ensure| 000010a0 20 74 68 65 20 3c 53 74 61 72 74 24 44 69 72 3e | the <Start$Dir>| 000010b0 20 76 61 72 69 61 62 6c 65 20 69 73 20 73 65 74 | variable is set| 000010c0 0d 03 b6 35 f4 20 20 20 20 63 6f 72 72 65 63 74 |...5. correct| 000010d0 6c 79 2e 20 69 65 2e 20 55 73 65 20 74 68 65 20 |ly. ie. Use the | 000010e0 21 52 75 6e 20 66 69 6c 65 20 74 6f 20 72 75 6e |!Run file to run| 000010f0 20 74 68 69 73 0d 03 c0 0e f4 20 20 20 20 66 69 | this..... fi| 00001100 6c 65 2e 0d 03 ca 35 f4 20 2a 2a 2a 2a 2a 2a 2a |le....5. *******| 00001110 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 00001130 2a 2a 2a 2a 2a 2a 2a 2a 0d 03 d4 04 0d 03 de 20 |********....... | 00001140 50 69 63 74 75 72 65 54 79 70 65 25 3d 26 64 39 |PictureType%=&d9| 00001150 34 3a f4 20 41 72 74 77 6f 72 6b 73 0d 03 e8 2c |4:. Artworks...,| 00001160 44 6f 63 75 6d 65 6e 74 54 79 70 65 25 3d 26 62 |DocumentType%=&b| 00001170 63 35 3a f4 20 49 6d 70 72 65 73 73 69 6f 6e 20 |c5:. Impression | 00001180 44 6f 63 75 6d 65 6e 74 0d 03 f2 26 55 73 65 72 |Document...&User| 00001190 24 3d 22 41 64 6d 69 6e 22 3a f4 20 55 73 65 72 |$="Admin":. User| 000011a0 20 6e 61 6d 65 20 69 73 20 41 64 6d 69 6e 0d 03 | name is Admin..| 000011b0 fc 04 0d 04 06 10 61 70 70 24 3d 22 53 74 61 72 |......app$="Star| 000011c0 74 22 0d 04 10 11 53 74 61 72 74 50 61 74 68 24 |t"....StartPath$| 000011d0 3d 22 22 0d 04 1a 11 53 74 61 72 74 44 61 74 65 |=""....StartDate| 000011e0 24 3d 22 22 0d 04 24 35 de 20 73 74 61 72 74 70 |$=""..$5. startp| 000011f0 61 74 68 20 32 35 35 2c 20 73 74 61 72 74 70 61 |ath 255, startpa| 00001200 74 68 76 61 72 20 33 32 2c 20 73 74 61 72 74 64 |thvar 32, startd| 00001210 61 74 65 76 61 72 20 33 32 0d 04 2e 2c 24 73 74 |atevar 32...,$st| 00001220 61 72 74 64 61 74 65 76 61 72 3d 22 3c 53 79 73 |artdatevar="<Sys| 00001230 24 54 69 6d 65 3e 20 3c 53 79 73 24 44 61 74 65 |$Time> <Sys$Date| 00001240 3e 22 2b bd 30 0d 04 38 22 24 73 74 61 72 74 70 |>"+.0..8"$startp| 00001250 61 74 68 76 61 72 3d 22 3c 53 74 61 72 74 24 44 |athvar="<Start$D| 00001260 69 72 3e 22 2b bd 30 0d 04 42 04 0d 04 4c 38 f4 |ir>"+.0..B...L8.| 00001270 20 41 71 75 69 72 65 20 74 68 65 20 73 74 61 72 | Aquire the star| 00001280 74 20 70 61 74 68 20 74 6f 20 75 73 65 20 66 6f |t path to use fo| 00001290 72 20 64 65 6c 65 74 65 20 6f 70 65 72 61 74 69 |r delete operati| 000012a0 6f 6e 73 0d 04 56 2d c8 99 22 4f 53 5f 47 53 54 |ons..V-.."OS_GST| 000012b0 72 61 6e 73 22 2c 73 74 61 72 74 70 61 74 68 76 |rans",startpathv| 000012c0 61 72 2c 73 74 61 72 74 70 61 74 68 2c 32 35 35 |ar,startpath,255| 000012d0 0d 04 60 21 53 74 61 72 74 50 61 74 68 24 3d a4 |..`!StartPath$=.| 000012e0 73 74 72 69 6e 67 28 73 74 61 72 74 70 61 74 68 |string(startpath| 000012f0 29 0d 04 6a 04 0d 04 74 40 de 20 65 72 72 6f 72 |)..j...t@. error| 00001300 62 6c 6f 63 6b 25 20 32 30 34 38 2c 20 62 6c 6f |block% 2048, blo| 00001310 63 6b 25 20 32 30 34 38 2c 20 62 6c 6f 63 6b 32 |ck% 2048, block2| 00001320 25 20 32 30 34 38 2c 20 63 6c 69 73 74 72 69 6e |% 2048, clistrin| 00001330 67 20 32 35 35 0d 04 7e 14 de 20 77 69 6e 62 6c |g 255..~.. winbl| 00001340 6f 63 6b 25 20 32 30 34 38 0d 04 88 04 0d 04 92 |ock% 2048.......| 00001350 18 de 20 49 6e 76 61 6c 69 64 44 72 69 76 65 24 |.. InvalidDrive$| 00001360 28 32 35 35 29 0d 04 9c 18 49 6e 76 61 6c 69 64 |(255)....Invalid| 00001370 44 72 69 76 65 43 6f 75 6e 74 25 3d 30 0d 04 a6 |DriveCount%=0...| 00001380 04 0d 04 b0 2c de 20 64 72 61 67 73 70 72 69 74 |....,. dragsprit| 00001390 65 6e 61 6d 65 25 20 33 32 2c 20 62 6f 75 6e 64 |ename% 32, bound| 000013a0 73 70 72 69 74 65 62 6f 78 25 20 33 32 0d 04 ba |spritebox% 32...| 000013b0 04 0d 04 c4 27 ee 20 85 20 f2 65 72 72 6f 72 28 |....'. . .error(| 000013c0 f6 24 2b 22 20 61 74 20 6c 69 6e 65 20 22 2b c3 |.$+" at line "+.| 000013d0 9e 29 3a d9 23 30 3a e0 0d 04 ce 04 0d 04 d8 04 |.):.#0:.........| 000013e0 0d 04 e2 16 43 41 43 48 45 5f 53 49 5a 45 25 20 |....CACHE_SIZE% | 000013f0 3d 20 34 30 39 36 0d 04 ec 10 70 61 75 73 65 25 |= 4096....pause%| 00001400 20 3d 20 32 30 30 0d 04 f6 10 6f 70 65 6e 5f 74 | = 200....open_t| 00001410 79 70 65 25 3d 31 0d 05 00 11 63 6c 6f 73 65 5f |ype%=1....close_| 00001420 74 79 70 65 25 3d 32 0d 05 0a 11 61 64 64 5f 77 |type%=2....add_w| 00001430 69 6e 64 6f 77 25 3d 31 0d 05 14 16 73 75 62 74 |indow%=1....subt| 00001440 72 61 63 74 5f 77 69 6e 64 6f 77 25 3d 32 0d 05 |ract_window%=2..| 00001450 1e 10 64 72 61 67 5f 74 79 70 65 25 3d 35 0d 05 |..drag_type%=5..| 00001460 28 0d 61 64 6a 75 73 74 25 3d 31 0d 05 32 0b 6d |(.adjust%=1..2.m| 00001470 65 6e 75 25 3d 32 0d 05 3c 0d 73 65 6c 65 63 74 |enu%=2..<.select| 00001480 25 3d 34 0d 05 46 14 69 63 6f 6e 62 61 72 68 61 |%=4..F.iconbarha| 00001490 6e 64 6c 65 25 3d 30 0d 05 50 0f 64 69 72 63 6f |ndle%=0..P.dirco| 000014a0 75 6e 74 25 3d 30 0d 05 5a 13 6c 69 6e 6b 6c 6f |unt%=0..Z.linklo| 000014b0 61 64 61 64 64 72 25 3d 30 0d 05 64 11 6f 62 6a |adaddr%=0..d.obj| 000014c0 65 63 74 74 79 70 65 25 3d 30 0d 05 6e 0f 6c 69 |ecttype%=0..n.li| 000014d0 6e 6b 6d 65 6e 75 25 3d 30 0d 05 78 0e 61 64 64 |nkmenu%=0..x.add| 000014e0 6c 69 6e 6b 25 3d 30 0d 05 82 29 69 63 6f 6e 62 |link%=0...)iconb| 000014f0 61 72 5f 74 69 6d 65 72 25 3d 91 3a 69 63 6f 6e |ar_timer%=.:icon| 00001500 62 61 72 5f 74 69 6d 65 72 66 6c 61 67 25 3d 30 |bar_timerflag%=0| 00001510 0d 05 8c 32 77 68 61 6e 64 6c 65 5f 74 6f 6f 6c |...2whandle_tool| 00001520 74 69 70 25 3d 30 3a 54 6f 6f 6c 54 69 70 25 3d |tip%=0:ToolTip%=| 00001530 30 3a 74 6f 6f 6c 74 69 70 5f 74 69 6d 65 72 25 |0:tooltip_timer%| 00001540 3d 30 0d 05 96 25 6f 76 65 72 72 69 64 65 5f 74 |=0...%override_t| 00001550 6f 6f 6c 74 69 70 25 3d 30 3a 4f 6c 64 54 6f 6f |ooltip%=0:OldToo| 00001560 6c 54 69 70 25 3d 30 0d 05 a0 1d 69 6e 74 65 72 |lTip%=0....inter| 00001570 6e 61 6c 73 74 61 63 6b 70 6f 73 69 74 69 6f 6e |nalstackposition| 00001580 25 3d 2d 32 0d 05 aa 17 6f 6c 64 73 74 61 63 6b |%=-2....oldstack| 00001590 70 6f 73 69 74 69 6f 6e 25 3d 30 0d 05 b4 14 63 |position%=0....c| 000015a0 75 72 72 65 6e 74 77 69 6e 64 6f 77 25 3d 30 0d |urrentwindow%=0.| 000015b0 05 be 18 63 75 72 72 65 6e 74 6d 65 6e 75 68 61 |...currentmenuha| 000015c0 6e 64 6c 65 25 3d 30 0d 05 c8 17 66 69 72 73 74 |ndle%=0....first| 000015d0 6d 65 6e 75 68 61 6e 64 6c 65 25 3d 2d 33 0d 05 |menuhandle%=-3..| 000015e0 d2 16 49 63 6f 6e 42 61 72 4d 65 6e 75 4f 70 65 |..IconBarMenuOpe| 000015f0 6e 25 3d 30 0d 05 dc 1a 53 74 61 72 74 4d 65 6e |n%=0....StartMen| 00001600 75 53 65 70 65 72 61 74 6f 72 25 3d 2d 31 0d 05 |uSeperator%=-1..| 00001610 e6 16 53 79 73 46 69 6c 65 50 72 65 66 69 78 25 |..SysFilePrefix%| 00001620 3d 31 32 36 0d 05 f0 14 42 6f 74 74 6f 6d 45 64 |=126....BottomEd| 00001630 67 65 46 6c 61 67 3d 30 0d 05 fa 17 61 66 74 65 |geFlag=0....afte| 00001640 72 25 3d 30 3a 63 61 73 63 61 64 65 25 3d 30 0d |r%=0:cascade%=0.| 00001650 06 04 18 77 68 61 6e 64 6c 65 5f 64 75 6d 6d 79 |...whandle_dummy| 00001660 62 61 63 6b 25 3d 30 0d 06 0e 14 4c 61 73 74 52 |back%=0....LastR| 00001670 69 67 68 74 45 64 67 65 25 3d 30 0d 06 18 11 43 |ightEdge%=0....C| 00001680 61 73 63 61 64 65 52 6f 77 25 3d 30 0d 06 22 12 |ascadeRow%=0..".| 00001690 52 61 6e 64 54 69 70 4d 61 78 25 3d 31 33 0d 06 |RandTipMax%=13..| 000016a0 2c 1b de 20 52 61 6e 64 54 69 70 24 28 52 61 6e |,.. RandTip$(Ran| 000016b0 64 54 69 70 4d 61 78 25 29 0d 06 36 1b 52 61 6e |dTipMax%)..6.Ran| 000016c0 64 54 69 70 24 28 30 29 3d 22 20 43 61 6e 6e 61 |dTip$(0)=" Canna| 000016d0 62 69 73 22 0d 06 40 16 52 61 6e 64 54 69 70 24 |bis"..@.RandTip$| 000016e0 28 31 29 3d 22 20 4c 53 44 22 0d 06 4a 18 52 61 |(1)=" LSD"..J.Ra| 000016f0 6e 64 54 69 70 24 28 32 29 3d 22 20 4f 70 69 75 |ndTip$(2)=" Opiu| 00001700 6d 22 0d 06 54 22 52 61 6e 64 54 69 70 24 28 33 |m"..T"RandTip$(3| 00001710 29 3d 22 20 4d 61 67 69 63 20 4d 75 73 68 72 6f |)=" Magic Mushro| 00001720 6f 6d 73 22 0d 06 5e 1c 52 61 6e 64 54 69 70 24 |oms"..^.RandTip$| 00001730 28 34 29 3d 22 20 4d 65 73 63 61 6c 69 6e 65 22 |(4)=" Mescaline"| 00001740 0d 06 68 19 52 61 6e 64 54 69 70 24 28 35 29 3d |..h.RandTip$(5)=| 00001750 22 20 50 65 79 6f 74 65 22 0d 06 72 28 52 61 6e |" Peyote"..r(Ran| 00001760 64 54 69 70 24 28 36 29 3d 22 20 4c 6f 70 68 6f |dTip$(6)=" Lopho| 00001770 70 68 6f 72 61 20 57 69 6c 6c 69 61 6d 73 69 69 |phora Williamsii| 00001780 22 0d 06 7c 18 52 61 6e 64 54 69 70 24 28 37 29 |"..|.RandTip$(7)| 00001790 3d 22 20 54 72 69 70 73 22 0d 06 86 17 52 61 6e |=" Trips"....Ran| 000017a0 64 54 69 70 24 28 38 29 3d 22 20 41 63 69 64 22 |dTip$(8)=" Acid"| 000017b0 0d 06 90 18 52 61 6e 64 54 69 70 24 28 39 29 3d |....RandTip$(9)=| 000017c0 22 20 53 70 65 65 64 22 0d 06 9a 26 52 61 6e 64 |" Speed"...&Rand| 000017d0 54 69 70 24 28 31 30 29 3d 22 20 4d 69 6e 64 20 |Tip$(10)=" Mind | 000017e0 42 65 6e 64 69 6e 67 20 44 72 75 67 73 22 0d 06 |Bending Drugs"..| 000017f0 a4 20 52 61 6e 64 54 69 70 24 28 31 31 29 3d 22 |. RandTip$(11)="| 00001800 20 50 73 79 63 68 65 64 65 6c 69 63 73 22 0d 06 | Psychedelics"..| 00001810 ae 17 52 61 6e 64 54 69 70 24 28 31 32 29 3d 22 |..RandTip$(12)="| 00001820 20 46 75 6e 22 0d 06 b8 04 0d 06 c2 16 49 63 6f | Fun"........Ico| 00001830 6e 42 61 72 41 6e 69 6d 53 69 7a 65 25 3d 37 0d |nBarAnimSize%=7.| 00001840 06 cc 24 de 20 49 63 6f 6e 42 61 72 41 6e 69 6d |..$. IconBarAnim| 00001850 24 28 49 63 6f 6e 42 61 72 41 6e 69 6d 53 69 7a |$(IconBarAnimSiz| 00001860 65 25 29 0d 06 d6 1d 49 63 6f 6e 42 61 72 41 6e |e%)....IconBarAn| 00001870 69 6d 24 28 30 29 3d 22 53 73 74 61 72 74 30 22 |im$(0)="Sstart0"| 00001880 0d 06 e0 1d 49 63 6f 6e 42 61 72 41 6e 69 6d 24 |....IconBarAnim$| 00001890 28 31 29 3d 22 53 73 74 61 72 74 31 22 0d 06 ea |(1)="Sstart1"...| 000018a0 1d 49 63 6f 6e 42 61 72 41 6e 69 6d 24 28 32 29 |.IconBarAnim$(2)| 000018b0 3d 22 53 73 74 61 72 74 32 22 0d 06 f4 1d 49 63 |="Sstart2"....Ic| 000018c0 6f 6e 42 61 72 41 6e 69 6d 24 28 33 29 3d 22 53 |onBarAnim$(3)="S| 000018d0 73 74 61 72 74 33 22 0d 06 fe 1d 49 63 6f 6e 42 |start3"....IconB| 000018e0 61 72 41 6e 69 6d 24 28 34 29 3d 22 53 73 74 61 |arAnim$(4)="Ssta| 000018f0 72 74 34 22 0d 07 08 1d 49 63 6f 6e 42 61 72 41 |rt4"....IconBarA| 00001900 6e 69 6d 24 28 35 29 3d 22 53 73 74 61 72 74 35 |nim$(5)="Sstart5| 00001910 22 0d 07 12 1d 49 63 6f 6e 42 61 72 41 6e 69 6d |"....IconBarAnim| 00001920 24 28 36 29 3d 22 53 73 74 61 72 74 36 22 0d 07 |$(6)="Sstart6"..| 00001930 1c 16 49 63 6f 6e 42 61 72 41 6e 69 6d 53 74 65 |..IconBarAnimSte| 00001940 70 25 3d 30 0d 07 26 15 49 63 6f 6e 42 61 72 41 |p%=0..&.IconBarA| 00001950 6e 69 6d 44 69 72 25 3d 31 0d 07 30 04 0d 07 3a |nimDir%=1..0...:| 00001960 04 0d 07 44 15 4d 65 6e 75 49 73 4f 70 65 6e 46 |...D.MenuIsOpenF| 00001970 6c 61 67 25 3d 30 0d 07 4e 12 41 75 74 6f 61 64 |lag%=0..N.Autoad| 00001980 64 4c 6f 63 6b 25 3d 30 0d 07 58 04 0d 07 62 04 |dLock%=0..X...b.| 00001990 0d 07 6c 51 de 20 64 62 6c 6f 63 6b 25 20 31 30 |..lQ. dblock% 10| 000019a0 32 34 2c 20 62 6f 6f 74 62 6c 6f 63 6b 25 20 31 |24, bootblock% 1| 000019b0 30 32 34 2c 20 73 68 6f 72 74 63 75 74 6d 65 6e |024, shortcutmen| 000019c0 75 25 20 31 30 31 39 32 2c 20 73 68 6f 72 74 63 |u% 10192, shortc| 000019d0 75 74 6d 65 6e 75 64 61 74 61 25 20 32 30 33 38 |utmenudata% 2038| 000019e0 34 0d 07 76 45 de 20 6d 61 69 6e 5f 6d 65 6e 75 |4..vE. main_menu| 000019f0 25 20 32 35 36 2c 20 74 79 70 65 62 75 66 25 20 |% 256, typebuf% | 00001a00 32 35 36 2c 20 69 63 6f 6e 62 61 72 6c 61 62 65 |256, iconbarlabe| 00001a10 6c 25 20 33 32 2c 20 69 63 6f 6e 62 61 72 64 61 |l% 32, iconbarda| 00001a20 74 61 25 20 33 32 0d 07 80 59 de 20 73 74 72 69 |ta% 32...Y. stri| 00001a30 6e 67 25 20 31 30 32 34 2c 20 62 6f 6f 74 73 74 |ng% 1024, bootst| 00001a40 72 69 6e 67 25 20 31 30 32 34 2c 20 69 6e 66 6f |ring% 1024, info| 00001a50 64 61 74 61 25 20 32 30 34 38 2c 20 74 6f 6f 6c |data% 2048, tool| 00001a60 74 69 70 64 61 74 61 25 20 32 30 34 38 2c 20 74 |tipdata% 2048, t| 00001a70 6f 6f 6c 74 69 70 69 63 6f 6e 25 20 35 31 32 0d |ooltipicon% 512.| 00001a80 07 8a 18 de 20 63 61 63 68 65 25 20 43 41 43 48 |.... cache% CACH| 00001a90 45 5f 53 49 5a 45 25 0d 07 94 1f de 20 64 69 72 |E_SIZE%..... dir| 00001aa0 6c 69 73 74 25 28 33 32 29 2c 20 64 69 72 70 74 |list%(32), dirpt| 00001ab0 72 25 28 33 32 29 0d 07 9e 04 0d 07 a8 1b 63 75 |r%(32)........cu| 00001ac0 72 72 65 6e 74 6d 65 6e 75 25 3d 6d 61 69 6e 5f |rrentmenu%=main_| 00001ad0 6d 65 6e 75 25 0d 07 b2 10 63 61 63 68 65 5f 65 |menu%....cache_e| 00001ae0 78 74 25 3d 30 0d 07 bc 12 74 61 73 6b 5f 68 61 |xt%=0....task_ha| 00001af0 6e 64 6c 65 25 3d 30 0d 07 c6 18 64 72 61 67 5f |ndle%=0....drag_| 00001b00 62 75 74 74 6f 6e 25 3d 61 64 6a 75 73 74 25 0d |button%=adjust%.| 00001b10 07 d0 09 44 58 25 3d 30 0d 07 da 10 64 72 61 67 |...DX%=0....drag| 00001b20 5f 69 63 6f 6e 25 3d 30 0d 07 e4 0c 70 61 74 68 |_icon%=0....path| 00001b30 24 3d 22 22 0d 07 ee 13 69 6e 5f 6c 65 66 74 72 |$=""....in_leftr| 00001b40 65 67 69 6f 6e 3d a3 0d 07 f8 14 69 6e 5f 72 69 |egion=.....in_ri| 00001b50 67 68 74 72 65 67 69 6f 6e 3d a3 0d 08 02 0e 71 |ghtregion=.....q| 00001b60 66 5f 74 69 6d 65 72 3d 91 0d 08 0c 10 72 65 67 |f_timer=.....reg| 00001b70 69 6f 6e 78 73 25 3d 31 36 0d 08 16 10 72 65 67 |ionxs%=16....reg| 00001b80 69 6f 6e 79 73 25 3d 36 34 0d 08 20 1d 24 69 63 |ionys%=64.. .$ic| 00001b90 6f 6e 62 61 72 6c 61 62 65 6c 25 3d 22 53 74 61 |onbarlabel%="Sta| 00001ba0 72 74 22 2b bd 30 0d 08 2a 1e 24 69 63 6f 6e 62 |rt"+.0..*.$iconb| 00001bb0 61 72 64 61 74 61 25 3d 22 53 21 73 74 61 72 74 |ardata%="S!start| 00001bc0 22 2b bd 30 0d 08 34 20 67 6c 6f 62 61 6c 6d 65 |"+.0..4 globalme| 00001bd0 6e 75 70 74 72 25 3d 73 68 6f 72 74 63 75 74 6d |nuptr%=shortcutm| 00001be0 65 6e 75 25 0d 08 3e 04 0d 08 48 18 24 69 63 6f |enu%..>...H.$ico| 00001bf0 6e 62 61 72 6c 61 62 65 6c 25 3d 22 22 2b bd 30 |nbarlabel%=""+.0| 00001c00 0d 08 52 24 24 69 63 6f 6e 62 61 72 64 61 74 61 |..R$$iconbardata| 00001c10 25 3d 49 63 6f 6e 42 61 72 41 6e 69 6d 24 28 30 |%=IconBarAnim$(0| 00001c20 29 2b bd 30 0d 08 5c 04 0d 08 66 04 0d 08 70 39 |)+.0..\...f...p9| 00001c30 f4 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |. **************| 00001c40 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 00001c60 2a 2a 2a 2a 2a 0d 08 7a 04 0d 08 84 0b 71 75 69 |*****..z.....qui| 00001c70 74 25 3d a3 0d 08 8e 04 0d 08 98 09 f2 69 6e 69 |t%=..........ini| 00001c80 74 0d 08 a2 30 f4 50 52 4f 43 65 72 72 6f 72 28 |t...0.PROCerror(| 00001c90 22 53 74 61 72 74 20 70 61 74 68 20 3d 20 22 2b |"Start path = "+| 00001ca0 53 74 61 72 74 50 61 74 68 24 2b 43 48 52 24 30 |StartPath$+CHR$0| 00001cb0 29 0d 08 ac 12 f2 43 72 65 61 74 65 54 6f 6f 6c |).....CreateTool| 00001cc0 54 69 70 0d 08 b6 0e f2 6c 6f 61 64 63 61 63 68 |Tip.....loadcach| 00001cd0 65 0d 08 c0 37 f2 44 69 72 65 63 74 6f 72 79 42 |e...7.DirectoryB| 00001ce0 6f 6f 74 28 53 74 61 72 74 50 61 74 68 24 2b 22 |oot(StartPath$+"| 00001cf0 2e 55 73 65 72 73 2e 22 2b 55 73 65 72 24 2b 22 |.Users."+User$+"| 00001d00 2e 4c 69 6e 6b 73 22 29 0d 08 ca 04 0d 08 d4 0e |.Links")........| 00001d10 c8 95 20 ac 20 71 75 69 74 25 0d 08 de 09 f2 70 |.. . quit%.....p| 00001d20 6f 6c 6c 0d 08 e8 05 ce 0d 08 f2 04 0d 08 fc 13 |oll.............| 00001d30 f2 44 65 73 74 72 6f 79 54 6f 6f 6c 54 69 70 0d |.DestroyToolTip.| 00001d40 09 06 17 c8 99 20 22 57 69 6d 70 5f 43 6c 6f 73 |..... "Wimp_Clos| 00001d50 65 44 6f 77 6e 22 0d 09 10 05 e0 0d 09 1a 04 0d |eDown"..........| 00001d60 09 24 39 f4 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |.$9. ***********| 00001d70 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 00001d90 2a 2a 2a 2a 2a 2a 2a 2a 0d 09 2e 04 0d 09 38 0d |********......8.| 00001da0 dd f2 47 65 74 44 61 74 65 0d 09 42 1a f4 20 41 |..GetDate..B.. A| 00001db0 71 75 69 72 65 20 64 61 74 65 20 61 6e 64 20 74 |quire date and t| 00001dc0 69 6d 65 0d 09 4c 2d c8 99 22 4f 53 5f 47 53 54 |ime..L-.."OS_GST| 00001dd0 72 61 6e 73 22 2c 73 74 61 72 74 64 61 74 65 76 |rans",startdatev| 00001de0 61 72 2c 73 74 61 72 74 70 61 74 68 2c 32 35 35 |ar,startpath,255| 00001df0 0d 09 56 21 53 74 61 72 74 44 61 74 65 24 3d a4 |..V!StartDate$=.| 00001e00 73 74 72 69 6e 67 28 73 74 61 72 74 70 61 74 68 |string(startpath| 00001e10 29 0d 09 60 05 e1 0d 09 6a 04 0d 09 74 39 f4 20 |)..`....j...t9. | 00001e20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 00001e50 2a 2a 2a 0d 09 7e 04 0d 09 88 0f f4 20 70 6f 6c |***..~...... pol| 00001e60 6c 20 6c 6f 6f 70 0d 09 92 0a dd f2 70 6f 6c 6c |l loop......poll| 00001e70 0d 09 9c 24 c8 99 22 57 69 6d 70 5f 50 6f 6c 6c |...$.."Wimp_Poll| 00001e80 22 2c 30 2c 62 6c 6f 63 6b 25 20 b8 20 72 65 61 |",0,block% . rea| 00001e90 73 6f 6e 25 0d 09 a6 32 f4 20 49 46 20 72 65 61 |son%...2. IF rea| 00001ea0 73 6f 6e 25 3c 3e 30 20 50 52 4f 43 65 72 72 6f |son%<>0 PROCerro| 00001eb0 72 28 53 54 52 24 28 72 65 61 73 6f 6e 25 29 2b |r(STR$(reason%)+| 00001ec0 43 48 52 24 30 29 0d 09 b0 10 c8 8e 20 72 65 61 |CHR$0)...... rea| 00001ed0 73 6f 6e 25 20 ca 0d 09 ba 14 c9 20 30 3a f2 6e |son% ...... 0:.n| 00001ee0 75 6c 6c 5f 72 65 61 73 6f 6e 0d 09 c4 14 c9 20 |ull_reason..... | 00001ef0 32 3a f2 50 6f 6c 6c 52 65 61 73 6f 6e 32 0d 09 |2:.PollReason2..| 00001f00 ce 25 c9 20 33 3a c8 99 20 22 57 69 6d 70 5f 43 |.%. 3:.. "Wimp_C| 00001f10 6c 6f 73 65 57 69 6e 64 6f 77 22 2c 2c 62 6c 6f |loseWindow",,blo| 00001f20 63 6b 25 0d 09 d8 19 c9 20 36 3a f2 63 6c 69 63 |ck%..... 6:.clic| 00001f30 6b 28 62 6c 6f 63 6b 25 21 31 32 29 0d 09 e2 11 |k(block%!12)....| 00001f40 c9 20 37 3a f2 64 72 61 67 64 72 6f 70 0d 09 ec |. 7:.dragdrop...| 00001f50 1b f4 20 57 48 45 4e 20 38 3a 50 52 4f 43 6b 65 |.. WHEN 8:PROCke| 00001f60 79 70 72 65 73 73 65 64 0d 09 f6 13 c9 20 39 3a |ypressed..... 9:| 00001f70 f2 6d 65 6e 75 73 65 6c 65 63 74 0d 0a 00 1d c9 |.menuselect.....| 00001f80 20 31 37 2c 31 38 3a f2 72 65 63 65 69 76 65 28 | 17,18:.receive(| 00001f90 72 65 61 73 6f 6e 25 29 0d 0a 0a 39 f4 20 57 48 |reason%)...9. WH| 00001fa0 45 4e 20 31 39 3a 50 52 4f 43 65 72 72 6f 72 28 |EN 19:PROCerror(| 00001fb0 22 55 6e 73 75 70 70 6f 72 74 65 64 20 77 69 6e |"Unsupported win| 00001fc0 64 6f 77 20 64 65 66 69 6e 69 74 69 6f 6e 2e 22 |dow definition."| 00001fd0 29 0d 0a 14 05 cb 0d 0a 1e 05 e1 0d 0a 28 04 0d |)............(..| 00001fe0 0a 32 39 f4 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |.29. ***********| 00001ff0 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 00002010 2a 2a 2a 2a 2a 2a 2a 2a 0d 0a 3c 04 0d 0a 46 11 |********..<...F.| 00002020 dd f2 50 6f 6c 6c 52 65 61 73 6f 6e 32 0d 0a 50 |..PollReason2..P| 00002030 1b e7 20 28 28 21 62 6c 6f 63 6b 25 29 20 3e 20 |.. ((!block%) > | 00002040 26 66 66 66 66 29 20 8c 0d 0a 5a 58 f4 20 50 52 |&ffff) ...ZX. PR| 00002050 4f 43 65 72 72 6f 72 28 22 57 69 6e 64 6f 77 20 |OCerror("Window | 00002060 74 6f 62 65 6f 70 65 6e 65 64 3a 22 2b 53 54 52 |tobeopened:"+STR| 00002070 24 7e 28 21 62 6c 6f 63 6b 25 29 2b 22 20 20 62 |$~(!block%)+" b| 00002080 65 68 69 6e 64 3a 20 22 2b 53 54 52 24 7e 28 62 |ehind: "+STR$~(b| 00002090 6c 6f 63 6b 25 21 32 38 29 2b 43 48 52 24 30 29 |lock%!28)+CHR$0)| 000020a0 0d 0a 64 20 c8 99 20 22 57 69 6d 70 5f 4f 70 65 |..d .. "Wimp_Ope| 000020b0 6e 57 69 6e 64 6f 77 22 2c 2c 62 6c 6f 63 6b 25 |nWindow",,block%| 000020c0 0d 0a 6e 05 cc 0d 0a 78 2e f4 63 75 72 72 65 6e |..n....x..curren| 000020d0 74 77 69 6e 64 6f 77 25 3d 21 62 6c 6f 63 6b 25 |twindow%=!block%| 000020e0 3a 50 52 4f 43 4f 70 65 6e 54 6f 6f 6c 54 69 70 |:PROCOpenToolTip| 000020f0 28 32 29 0d 0a 82 41 f4 20 54 68 69 73 20 69 73 |(2)...A. This is| 00002100 20 76 65 72 79 20 77 69 65 72 64 20 2d 20 74 68 | very wierd - th| 00002110 65 20 77 69 6e 64 6f 77 68 61 6e 64 6c 65 20 69 |e windowhandle i| 00002120 73 20 69 6e 76 61 6c 69 64 20 61 6e 64 20 65 71 |s invalid and eq| 00002130 75 61 6c 73 0d 0a 8c 3f f4 20 74 68 65 20 6d 6f |uals...?. the mo| 00002140 75 73 65 20 70 6f 69 6e 74 65 72 20 78 20 70 6f |use pointer x po| 00002150 73 69 74 69 6f 6e 20 2d 20 6d 75 73 74 20 62 65 |sition - must be| 00002160 20 61 20 6d 65 6e 75 20 49 20 72 65 63 6b 6f 6e | a menu I reckon| 00002170 20 6f 72 0d 0a 96 1f f4 20 63 6f 75 6c 64 20 62 | or..... could b| 00002180 65 20 61 20 62 75 67 20 69 6e 20 52 49 53 43 4f |e a bug in RISCO| 00002190 53 2e 0d 0a a0 15 4d 65 6e 75 49 73 4f 70 65 6e |S.....MenuIsOpen| 000021a0 46 6c 61 67 25 3d 31 0d 0a aa 05 cd 0d 0a b4 04 |Flag%=1.........| 000021b0 0d 0a be 05 e1 0d 0a c8 04 0d 0a d2 13 dd f2 47 |...............G| 000021c0 65 74 53 63 72 65 65 6e 53 69 7a 65 0d 0a dc 33 |etScreenSize...3| 000021d0 c8 99 22 4f 53 5f 52 65 61 64 4d 6f 64 65 56 61 |.."OS_ReadModeVa| 000021e0 72 69 61 62 6c 65 22 2c 2d 31 2c 34 20 b8 20 2c |riable",-1,4 . ,| 000021f0 2c 4f 53 5f 45 58 25 3a f4 20 45 69 67 65 6e 0d |,OS_EX%:. Eigen.| 00002200 0a e6 2b c8 99 22 4f 53 5f 52 65 61 64 4d 6f 64 |..+.."OS_ReadMod| 00002210 65 56 61 72 69 61 62 6c 65 22 2c 2d 31 2c 35 20 |eVariable",-1,5 | 00002220 b8 20 2c 2c 4f 53 5f 45 59 25 0d 0a f0 33 c8 99 |. ,,OS_EY%...3..| 00002230 22 4f 53 5f 52 65 61 64 4d 6f 64 65 56 61 72 69 |"OS_ReadModeVari| 00002240 61 62 6c 65 22 2c 2d 31 2c 31 31 20 b8 20 2c 2c |able",-1,11 . ,,| 00002250 4f 53 5f 57 58 25 3a f4 20 53 69 7a 65 0d 0a fa |OS_WX%:. Size...| 00002260 2c c8 99 22 4f 53 5f 52 65 61 64 4d 6f 64 65 56 |,.."OS_ReadModeV| 00002270 61 72 69 61 62 6c 65 22 2c 2d 31 2c 31 32 20 b8 |ariable",-1,12 .| 00002280 20 2c 2c 4f 53 5f 57 59 25 0d 0b 04 1f 4f 53 5f | ,,OS_WY%....OS_| 00002290 4d 58 25 3d 28 31 2b 4f 53 5f 57 58 25 29 20 3c |MX%=(1+OS_WX%) <| 000022a0 3c 20 4f 53 5f 45 58 25 0d 0b 0e 1f 4f 53 5f 4d |< OS_EX%....OS_M| 000022b0 59 25 3d 28 31 2b 4f 53 5f 57 59 25 29 20 3c 3c |Y%=(1+OS_WY%) <<| 000022c0 20 4f 53 5f 45 59 25 0d 0b 18 05 e1 0d 0b 22 04 | OS_EY%.......".| 000022d0 0d 0b 2c 16 f4 44 45 46 50 52 4f 43 6b 65 79 70 |..,..DEFPROCkeyp| 000022e0 72 65 73 73 65 64 0d 0b 36 10 f4 4c 4f 43 41 4c |ressed..6..LOCAL| 000022f0 20 43 68 61 72 25 0d 0b 40 14 f4 43 68 61 72 25 | Char%..@..Char%| 00002300 3d 62 6c 6f 63 6b 25 21 32 34 0d 0b 4a 2d f4 52 |=block%!24..J-.R| 00002310 45 4d 20 49 73 20 74 68 69 73 20 74 68 65 20 64 |EM Is this the d| 00002320 65 6c 65 74 65 20 6f 72 20 62 61 63 6b 73 70 61 |elete or backspa| 00002330 63 65 20 6b 65 79 3f 0d 0b 54 23 f4 49 46 20 28 |ce key?..T#.IF (| 00002340 43 68 61 72 25 3d 38 20 4f 52 20 43 68 61 72 25 |Char%=8 OR Char%| 00002350 3d 26 37 66 29 20 54 48 45 4e 0d 0b 5e 1b f4 52 |=&7f) THEN..^..R| 00002360 45 4d 20 49 73 20 74 68 69 73 20 69 6e 20 61 20 |EM Is this in a | 00002370 6d 65 6e 75 3f 0d 0b 68 5e f4 50 52 4f 43 65 72 |menu?..h^.PROCer| 00002380 72 6f 72 28 22 57 69 6e 64 6f 77 20 68 61 6e 64 |ror("Window hand| 00002390 6c 65 20 3d 20 22 2b 53 54 52 24 7e 28 62 6c 6f |le = "+STR$~(blo| 000023a0 63 6b 25 21 30 29 2b 22 20 2d 2d 20 6d 61 69 6e |ck%!0)+" -- main| 000023b0 5f 6d 65 6e 75 25 20 3d 20 22 2b 53 54 52 24 7e |_menu% = "+STR$~| 000023c0 28 6d 61 69 6e 5f 6d 65 6e 75 25 29 2b 43 48 52 |(main_menu%)+CHR| 000023d0 24 30 29 0d 0b 72 09 f4 45 4c 53 45 0d 0b 7c 20 |$0)..r..ELSE..| | 000023e0 f4 53 59 53 20 22 57 69 6d 70 5f 50 72 6f 63 65 |.SYS "Wimp_Proce| 000023f0 73 73 4b 65 79 22 2c 43 68 61 72 25 0d 0b 86 0a |ssKey",Char%....| 00002400 f4 45 4e 44 49 46 0d 0b 90 0c f4 45 4e 44 50 52 |.ENDIF.....ENDPR| 00002410 4f 43 0d 0b 9a 04 0d 0b a4 17 dd f2 52 65 6f 70 |OC..........Reop| 00002420 65 6e 44 75 6d 6d 79 57 69 6e 64 6f 77 0d 0b ae |enDummyWindow...| 00002430 20 20 21 62 6c 6f 63 6b 32 25 3d 77 68 61 6e 64 | !block2%=whand| 00002440 6c 65 5f 64 75 6d 6d 79 62 61 63 6b 25 0d 0b b8 |le_dummyback%...| 00002450 25 20 c8 99 22 57 69 6d 70 5f 47 65 74 57 69 6e |% .."Wimp_GetWin| 00002460 64 6f 77 53 74 61 74 65 22 2c 2c 62 6c 6f 63 6b |dowState",,block| 00002470 32 25 0d 0b c2 25 20 62 6c 6f 63 6b 32 25 21 38 |2%...% block2%!8| 00002480 3d 2d 31 30 32 34 3a 62 6c 6f 63 6b 32 25 21 31 |=-1024:block2%!1| 00002490 36 3d 2d 31 30 32 34 0d 0b cc 12 20 62 6c 6f 63 |6=-1024.... bloc| 000024a0 6b 32 25 21 32 38 3d 2d 32 0d 0b d6 22 20 c8 99 |k2%!28=-2..." ..| 000024b0 22 57 69 6d 70 5f 4f 70 65 6e 57 69 6e 64 6f 77 |"Wimp_OpenWindow| 000024c0 22 2c 2c 62 6c 6f 63 6b 32 25 20 0d 0b e0 29 20 |",,block2% ...) | 000024d0 61 66 74 65 72 25 3d 77 68 61 6e 64 6c 65 5f 64 |after%=whandle_d| 000024e0 75 6d 6d 79 62 61 63 6b 25 3a 63 61 73 63 61 64 |ummyback%:cascad| 000024f0 65 25 3d 30 0d 0b ea 16 20 4d 65 6e 75 49 73 4f |e%=0.... MenuIsO| 00002500 70 65 6e 46 6c 61 67 25 3d 30 0d 0b f4 05 e1 0d |penFlag%=0......| 00002510 0b fe 04 0d 0c 08 0e dd 20 f2 63 61 73 63 61 64 |........ .cascad| 00002520 65 0d 0c 12 12 ea 20 71 25 2c 4f 6c 64 41 66 74 |e..... q%,OldAft| 00002530 65 72 25 0d 0c 1c 18 ea 20 73 78 25 2c 20 73 79 |er%..... sx%, sy| 00002540 25 2c 20 6f 78 25 2c 20 6f 79 25 0d 0c 26 1d ea |%, ox%, oy%..&..| 00002550 20 52 65 6f 70 65 6e 46 6c 61 67 25 2c 20 53 74 | ReopenFlag%, St| 00002560 61 63 6b 46 6c 61 67 25 0d 0c 30 2d ea 20 50 61 |ackFlag%..0-. Pa| 00002570 6e 65 46 6c 61 67 25 2c 20 49 73 4f 70 65 6e 46 |neFlag%, IsOpenF| 00002580 6c 61 67 25 2c 20 49 73 4d 6f 76 65 61 62 6c 65 |lag%, IsMoveable| 00002590 46 6c 61 67 25 0d 0c 3a 1e ea 20 43 75 72 72 65 |Flag%..:.. Curre| 000025a0 6e 74 57 69 6e 25 2c 43 75 72 72 65 6e 74 49 63 |ntWin%,CurrentIc| 000025b0 6f 6e 25 0d 0c 44 04 0d 0c 4e 10 71 25 3d 77 69 |on%..D...N.q%=wi| 000025c0 6e 62 6c 6f 63 6b 25 0d 0c 58 0f 50 61 6e 65 46 |nblock%..X.PaneF| 000025d0 6c 61 67 25 3d a3 0d 0c 62 04 0d 0c 6c 32 f4 20 |lag%=...b...l2. | 000025e0 47 65 74 20 43 75 72 72 65 6e 74 20 77 69 6e 64 |Get Current wind| 000025f0 6f 77 20 69 6d 6d 65 64 69 61 74 65 6c 79 20 75 |ow immediately u| 00002600 6e 64 65 72 20 70 6f 69 6e 74 65 72 0d 0c 76 24 |nder pointer..v$| 00002610 c8 99 22 57 69 6d 70 5f 47 65 74 50 6f 69 6e 74 |.."Wimp_GetPoint| 00002620 65 72 49 6e 66 6f 22 2c 2c 62 6c 6f 63 6b 32 25 |erInfo",,block2%| 00002630 0d 0c 80 1d 43 75 72 72 65 6e 74 57 69 6e 50 74 |....CurrentWinPt| 00002640 72 25 3d 62 6c 6f 63 6b 32 25 21 31 32 0d 0c 8a |r%=block2%!12...| 00002650 1b 43 75 72 72 65 6e 74 49 63 6f 6e 25 3d 62 6c |.CurrentIcon%=bl| 00002660 6f 63 6b 32 25 21 31 36 0d 0c 94 04 0d 0c 9e 14 |ock2%!16........| 00002670 4f 6c 64 41 66 74 65 72 25 3d 61 66 74 65 72 25 |OldAfter%=after%| 00002680 0d 0c a8 0e 21 71 25 3d 61 66 74 65 72 25 0d 0c |....!q%=after%..| 00002690 b2 2e f4 20 5f 54 72 79 5f 20 61 6e 64 20 72 65 |... _Try_ and re| 000026a0 6f 70 65 6e 20 74 68 69 73 20 64 65 73 6b 74 6f |open this deskto| 000026b0 70 20 77 69 6e 64 6f 77 20 2e 2e 2e 0d 0c bc 21 |p window ......!| 000026c0 c8 99 20 22 58 57 69 6d 70 5f 47 65 74 57 69 6e |.. "XWimp_GetWin| 000026d0 64 6f 77 53 74 61 74 65 22 2c 2c 71 25 0d 0c c6 |dowState",,q%...| 000026e0 23 e7 61 66 74 65 72 25 3d 2d 31 20 f2 52 65 6f |#.after%=-1 .Reo| 000026f0 70 65 6e 44 75 6d 6d 79 57 69 6e 64 6f 77 3a e1 |penDummyWindow:.| 00002700 0d 0c d0 13 43 75 72 72 65 6e 74 57 69 6e 25 3d |....CurrentWin%=| 00002710 21 71 25 0d 0c da 10 61 66 74 65 72 25 3d 71 25 |!q%....after%=q%| 00002720 21 32 38 0d 0c e4 2d e7 20 28 43 75 72 72 65 6e |!28...-. (Curren| 00002730 74 57 69 6e 25 3d 2d 31 20 84 20 28 61 66 74 65 |tWin%=-1 . (afte| 00002740 72 25 3d 4f 6c 64 41 66 74 65 72 25 29 29 20 8c |r%=OldAfter%)) .| 00002750 0d 0c ee 17 20 f2 52 65 6f 70 65 6e 44 75 6d 6d |.... .ReopenDumm| 00002760 79 57 69 6e 64 6f 77 0d 0c f8 06 cc 20 0d 0d 02 |yWindow..... ...| 00002770 18 20 f4 20 52 65 70 6f 73 69 74 69 6f 6e 20 77 |. . Reposition w| 00002780 69 6e 64 6f 77 0d 0d 0c 32 20 e7 20 28 63 61 73 |indow...2 . (cas| 00002790 63 61 64 65 25 3d 30 29 20 43 61 73 63 61 64 65 |cade%=0) Cascade| 000027a0 52 6f 77 25 3d 30 3a 4c 61 73 74 52 69 67 68 74 |Row%=0:LastRight| 000027b0 45 64 67 65 25 3d 30 0d 0d 16 2f 20 f4 20 21 71 |Edge%=0.../ . !q| 000027c0 25 3d 61 66 74 65 72 25 3a 53 59 53 20 22 57 69 |%=after%:SYS "Wi| 000027d0 6d 70 5f 47 65 74 57 69 6e 64 6f 77 53 74 61 74 |mp_GetWindowStat| 000027e0 65 22 2c 2c 71 25 0d 0d 20 05 20 0d 0d 2a 05 20 |e",,q%.. . ..*. | 000027f0 0d 0d 34 10 20 50 61 6e 65 46 6c 61 67 25 3d a3 |..4. PaneFlag%=.| 00002800 0d 0d 3e 32 20 e7 20 28 28 28 71 25 21 33 32 29 |..>2 . (((q%!32)| 00002810 20 80 20 28 28 32 5e 32 32 29 2b 28 32 5e 32 33 | . ((2^22)+(2^23| 00002820 29 29 29 3e 30 29 20 50 61 6e 65 46 6c 61 67 25 |)))>0) PaneFlag%| 00002830 3d b9 0d 0d 48 26 20 e7 20 28 28 28 71 25 21 33 |=...H& . (((q%!3| 00002840 32 29 20 80 20 33 32 29 3d 33 32 29 20 50 61 6e |2) . 32)=32) Pan| 00002850 65 46 6c 61 67 25 3d b9 0d 0d 52 25 20 49 73 4f |eFlag%=...R% IsO| 00002860 70 65 6e 46 6c 61 67 25 20 3d 20 28 28 71 25 21 |penFlag% = ((q%!| 00002870 33 32 29 20 80 20 28 32 5e 31 36 29 29 0d 0d 5c |32) . (2^16))..\| 00002880 24 20 49 73 4d 6f 76 65 61 62 6c 65 46 6c 61 67 |$ IsMoveableFlag| 00002890 25 20 3d 20 28 28 71 25 21 33 32 29 20 80 20 32 |% = ((q%!32) . 2| 000028a0 29 0d 0d 66 31 20 f4 20 48 61 73 20 77 69 6e 64 |)..f1 . Has wind| 000028b0 6f 77 20 6d 6f 76 65 64 20 61 74 20 61 6c 6c 20 |ow moved at all | 000028c0 66 6f 72 20 72 65 70 6f 73 69 74 69 6f 6e 69 6e |for repositionin| 000028d0 67 3f 0d 0d 70 04 0d 0d 7a 12 20 52 65 6f 70 65 |g?..p...z. Reope| 000028e0 6e 46 6c 61 67 25 3d b9 0d 0d 84 11 20 53 74 61 |nFlag%=..... Sta| 000028f0 63 6b 46 6c 61 67 25 3d b9 0d 0d 8e b4 f4 20 20 |ckFlag%=...... | 00002900 49 46 20 28 28 28 71 25 21 33 32 29 20 41 4e 44 |IF (((q%!32) AND| 00002910 20 28 32 5e 31 38 29 29 3e 30 20 41 4e 44 20 28 | (2^18))>0 AND (| 00002920 28 71 25 21 33 32 29 20 41 4e 44 20 28 32 5e 32 |(q%!32) AND (2^2| 00002930 30 29 29 3e 30 20 41 4e 44 20 28 28 71 25 21 33 |0))>0 AND ((q%!3| 00002940 32 29 20 41 4e 44 20 28 32 5e 32 37 29 29 3e 30 |2) AND (2^27))>0| 00002950 29 20 53 74 61 63 6b 46 6c 61 67 25 3d 46 41 4c |) StackFlag%=FAL| 00002960 53 45 3a 52 65 6f 70 65 6e 46 6c 61 67 25 3d 46 |SE:ReopenFlag%=F| 00002970 41 4c 53 45 3a 52 45 4d 20 54 6f 67 67 6c 65 64 |ALSE:REM Toggled| 00002980 20 4d 61 78 69 6d 69 73 65 20 26 20 68 61 73 20 | Maximise & has | 00002990 69 6e 70 75 74 20 66 6f 63 75 73 20 26 20 68 61 |input focus & ha| 000029a0 73 20 74 6f 67 67 6c 65 20 69 63 6f 6e 0d 0d 98 |s toggle icon...| 000029b0 fb e7 20 28 43 75 72 72 65 6e 74 57 69 6e 25 3d |.. (CurrentWin%=| 000029c0 43 75 72 72 65 6e 74 57 69 6e 50 74 72 25 20 80 |CurrentWinPtr% .| 000029d0 20 28 28 71 25 21 33 32 29 20 80 20 28 32 5e 32 | ((q%!32) . (2^2| 000029e0 38 29 29 3d 30 20 80 20 28 28 71 25 21 33 32 29 |8))=0 . ((q%!32)| 000029f0 20 80 20 28 32 5e 33 30 29 29 3d 30 20 80 20 28 | . (2^30))=0 . (| 00002a00 28 71 25 21 33 32 29 20 80 20 28 32 5e 31 37 29 |(q%!32) . (2^17)| 00002a10 29 3e 30 20 80 20 61 66 74 65 72 25 3d 2d 31 29 |)>0 . after%=-1)| 00002a20 20 53 74 61 63 6b 46 6c 61 67 25 3d a3 3a 52 65 | StackFlag%=.:Re| 00002a30 6f 70 65 6e 46 6c 61 67 25 3d a3 3a f4 20 55 6e |openFlag%=.:. Un| 00002a40 64 65 72 20 70 6f 69 6e 74 65 72 20 61 6e 64 20 |der pointer and | 00002a50 5f 6e 6f 5f 20 68 6f 72 69 7a 2f 76 65 72 74 20 |_no_ horiz/vert | 00002a60 73 63 72 6f 6c 6c 20 62 61 72 73 20 61 6e 64 20 |scroll bars and | 00002a70 66 75 6c 6c 79 20 76 69 73 69 62 6c 65 20 28 6c |fully visible (l| 00002a80 69 6b 65 6c 79 20 74 6f 20 62 65 20 70 61 72 74 |ikely to be part| 00002a90 20 6f 66 20 6d 65 6e 75 20 73 6f 20 6c 65 61 76 | of menu so leav| 00002aa0 65 20 61 6c 6f 6e 65 29 0d 0d a2 e7 e7 20 28 28 |e alone)..... ((| 00002ab0 28 71 25 21 33 32 29 20 80 20 28 32 5e 31 38 29 |(q%!32) . (2^18)| 00002ac0 29 3e 30 20 80 20 28 28 71 25 21 33 32 29 20 80 |)>0 . ((q%!32) .| 00002ad0 20 28 32 5e 32 37 29 29 3e 30 20 80 20 28 28 71 | (2^27))>0 . ((q| 00002ae0 25 21 33 32 29 20 80 20 28 32 5e 32 38 29 29 3e |%!32) . (2^28))>| 00002af0 30 20 80 20 28 28 71 25 21 33 32 29 20 80 20 28 |0 . ((q%!32) . (| 00002b00 32 5e 33 30 29 29 3e 30 29 20 53 74 61 63 6b 46 |2^30))>0) StackF| 00002b10 6c 61 67 25 3d a3 3a 52 65 6f 70 65 6e 46 6c 61 |lag%=.:ReopenFla| 00002b20 67 25 3d a3 3a f4 20 54 6f 67 67 6c 65 64 20 4d |g%=.:. Toggled M| 00002b30 61 78 69 6d 69 73 65 20 26 20 68 61 73 20 74 6f |aximise & has to| 00002b40 67 67 6c 65 20 69 63 6f 6e 20 61 6e 64 20 68 61 |ggle icon and ha| 00002b50 73 20 68 6f 72 69 7a 2f 76 65 72 74 20 73 63 72 |s horiz/vert scr| 00002b60 6f 6c 6c 20 62 61 72 73 20 2d 20 6c 69 6b 65 6c |oll bars - likel| 00002b70 79 20 74 6f 20 62 65 20 61 20 77 6f 72 64 20 70 |y to be a word p| 00002b80 72 6f 63 65 73 73 6f 72 20 77 69 6e 64 6f 77 0d |rocessor window.| 00002b90 0d ac 9c e7 20 28 20 28 71 25 21 31 36 20 3c 20 |.... ( (q%!16 < | 00002ba0 28 4f 53 5f 4d 59 25 2d 28 63 61 73 63 61 64 65 |(OS_MY%-(cascade| 00002bb0 25 2a 34 30 29 29 29 20 80 20 28 71 25 21 34 20 |%*40))) . (q%!4 | 00002bc0 3e 20 30 29 20 80 20 28 71 25 21 31 32 20 3c 20 |> 0) . (q%!12 < | 00002bd0 28 4f 53 5f 4d 58 25 2d 34 30 29 29 20 80 20 28 |(OS_MX%-40)) . (| 00002be0 71 25 21 38 3e 34 30 29 20 80 20 28 28 71 25 21 |q%!8>40) . ((q%!| 00002bf0 33 32 29 20 80 20 28 32 5e 31 37 29 29 3e 30 29 |32) . (2^17))>0)| 00002c00 20 53 74 61 63 6b 46 6c 61 67 25 3d a3 3a 52 65 | StackFlag%=.:Re| 00002c10 6f 70 65 6e 46 6c 61 67 25 3d a3 3a f4 20 46 75 |openFlag%=.:. Fu| 00002c20 6c 6c 79 20 76 69 73 69 62 6c 65 0d 0d b6 40 20 |lly visible...@ | 00002c30 e7 20 28 43 75 72 72 65 6e 74 57 69 6e 25 3d 77 |. (CurrentWin%=w| 00002c40 68 61 6e 64 6c 65 5f 74 6f 6f 6c 74 69 70 25 29 |handle_tooltip%)| 00002c50 20 53 74 61 63 6b 46 6c 61 67 25 3d a3 3a 52 65 | StackFlag%=.:Re| 00002c60 6f 70 65 6e 46 6c 61 67 25 3d a3 0d 0d c0 42 20 |openFlag%=....B | 00002c70 e7 20 28 43 75 72 72 65 6e 74 57 69 6e 25 3d 77 |. (CurrentWin%=w| 00002c80 68 61 6e 64 6c 65 5f 64 75 6d 6d 79 62 61 63 6b |handle_dummyback| 00002c90 25 29 20 53 74 61 63 6b 46 6c 61 67 25 3d a3 3a |%) StackFlag%=.:| 00002ca0 52 65 6f 70 65 6e 46 6c 61 67 25 3d a3 0d 0d ca |ReopenFlag%=....| 00002cb0 2f 20 e7 20 28 50 61 6e 65 46 6c 61 67 25 3d b9 |/ . (PaneFlag%=.| 00002cc0 29 20 53 74 61 63 6b 46 6c 61 67 25 3d a3 3a 52 |) StackFlag%=.:R| 00002cd0 65 6f 70 65 6e 46 6c 61 67 25 3d a3 0d 0d d4 45 |eopenFlag%=....E| 00002ce0 20 e7 20 28 49 73 4f 70 65 6e 46 6c 61 67 25 3d | . (IsOpenFlag%=| 00002cf0 30 20 84 20 49 73 4d 6f 76 65 61 62 6c 65 46 6c |0 . IsMoveableFl| 00002d00 61 67 25 3d 30 29 20 53 74 61 63 6b 46 6c 61 67 |ag%=0) StackFlag| 00002d10 25 3d a3 3a 52 65 6f 70 65 6e 46 6c 61 67 25 3d |%=.:ReopenFlag%=| 00002d20 a3 0d 0d de 35 20 e7 20 28 4d 65 6e 75 49 73 4f |....5 . (MenuIsO| 00002d30 70 65 6e 46 6c 61 67 25 3d 31 29 20 53 74 61 63 |penFlag%=1) Stac| 00002d40 6b 46 6c 61 67 25 3d a3 3a 52 65 6f 70 65 6e 46 |kFlag%=.:ReopenF| 00002d50 6c 61 67 25 3d a3 0d 0d e8 38 f4 20 49 66 20 70 |lag%=....8. If p| 00002d60 6f 69 6e 74 65 72 20 69 73 20 6f 76 65 72 20 77 |ointer is over w| 00002d70 69 6e 64 6f 77 20 61 6e 64 20 77 69 74 68 69 6e |indow and within| 00002d80 20 74 68 65 20 77 6f 72 6b 20 61 72 65 61 0d 0d | the work area..| 00002d90 f2 19 f4 20 74 68 65 6e 20 64 6f 6e 27 74 20 6d |... then don't m| 00002da0 6f 76 65 20 69 74 2e 0d 0d fc 30 e7 20 28 43 75 |ove it....0. (Cu| 00002db0 72 72 65 6e 74 57 69 6e 25 3d 43 75 72 72 65 6e |rrentWin%=Curren| 00002dc0 74 57 69 6e 50 74 72 25 29 20 52 65 6f 70 65 6e |tWinPtr%) Reopen| 00002dd0 46 6c 61 67 25 3d a3 0d 0e 06 30 20 f4 20 52 65 |Flag%=....0 . Re| 00002de0 73 65 74 20 70 6f 73 69 74 69 6f 6e 20 6f 66 20 |set position of | 00002df0 77 69 6e 64 6f 77 20 61 6e 64 20 64 6f 20 61 20 |window and do a | 00002e00 52 65 2d 4f 70 65 6e 0d 0e 10 19 20 f4 20 47 65 |Re-Open.... . Ge| 00002e10 74 20 73 69 7a 65 20 6f 66 20 77 69 6e 64 6f 77 |t size of window| 00002e20 0d 0e 1a 17 20 e7 20 28 53 74 61 63 6b 46 6c 61 |.... . (StackFla| 00002e30 67 25 3d b9 29 20 8c 0d 0e 24 0e 20 20 6f 78 25 |g%=.) ...$. ox%| 00002e40 3d 71 25 21 34 0d 0e 2e 0f 20 20 6f 79 25 3d 71 |=q%!4.... oy%=q| 00002e50 25 21 31 36 0d 0e 38 18 20 20 73 78 25 3d 28 71 |%!16..8. sx%=(q| 00002e60 25 21 31 32 29 2d 28 71 25 21 34 29 0d 0e 42 18 |%!12)-(q%!4)..B.| 00002e70 20 20 73 79 25 3d 28 71 25 21 31 36 29 2d 28 71 | sy%=(q%!16)-(q| 00002e80 25 21 38 29 0d 0e 4c 06 20 20 0d 0e 56 3c 20 20 |%!8)..L. ..V< | 00002e90 f4 20 54 72 79 20 61 6e 64 20 66 69 74 20 61 73 |. Try and fit as| 00002ea0 20 6d 61 6e 79 20 77 69 6e 64 6f 77 73 20 68 6f | many windows ho| 00002eb0 72 69 7a 6f 6e 74 61 6c 6c 79 20 61 73 20 70 6f |rizontally as po| 00002ec0 73 73 69 62 6c 65 0d 0e 60 2c 20 20 e7 20 28 28 |ssible..`, . ((| 00002ed0 4c 61 73 74 52 69 67 68 74 45 64 67 65 25 2b 73 |LastRightEdge%+s| 00002ee0 78 25 29 3c 28 4f 53 5f 4d 58 25 2d 34 30 29 29 |x%)<(OS_MX%-40))| 00002ef0 20 8c 0d 0e 6a 1a 20 20 20 71 25 21 34 3d 4c 61 | ...j. q%!4=La| 00002f00 73 74 52 69 67 68 74 45 64 67 65 25 0d 0e 74 30 |stRightEdge%..t0| 00002f10 20 20 20 71 25 21 31 36 3d 28 4f 53 5f 4d 59 25 | q%!16=(OS_MY%| 00002f20 2d 34 30 29 2d 28 43 61 73 63 61 64 65 52 6f 77 |-40)-(CascadeRow| 00002f30 25 2a 34 30 29 3a f4 20 31 31 36 30 0d 0e 7e 17 |%*40):. 1160..~.| 00002f40 20 20 20 71 25 21 31 32 3d 28 71 25 21 34 29 2b | q%!12=(q%!4)+| 00002f50 73 78 25 0d 0e 88 30 20 20 20 e7 20 28 28 71 25 |sx%...0 . ((q%| 00002f60 21 31 32 29 3e 28 4f 53 5f 4d 58 25 2d 34 30 29 |!12)>(OS_MX%-40)| 00002f70 29 20 71 25 21 31 32 3d 28 4f 53 5f 4d 58 25 2d |) q%!12=(OS_MX%-| 00002f80 34 30 29 0d 0e 92 17 20 20 20 71 25 21 38 3d 28 |40).... q%!8=(| 00002f90 71 25 21 31 36 29 2d 73 79 25 0d 0e 9c 1c 20 20 |q%!16)-sy%.... | 00002fa0 20 e7 20 28 28 71 25 21 38 29 3c 34 30 29 20 71 | . ((q%!8)<40) q| 00002fb0 25 21 38 3d 34 30 0d 0e a6 20 20 20 20 4c 61 73 |%!8=40... Las| 00002fc0 74 52 69 67 68 74 45 64 67 65 25 3d 28 71 25 21 |tRightEdge%=(q%!| 00002fd0 31 32 29 2b 34 38 0d 0e b0 07 20 20 cc 0d 0e ba |12)+48.... ....| 00002fe0 17 20 20 20 4c 61 73 74 52 69 67 68 74 45 64 67 |. LastRightEdg| 00002ff0 65 25 3d 30 0d 0e c4 15 20 20 20 43 61 73 63 61 |e%=0.... Casca| 00003000 64 65 52 6f 77 25 2b 3d 31 0d 0e ce 1b 20 20 20 |deRow%+=1.... | 00003010 71 25 21 34 3d 28 43 61 73 63 61 64 65 52 6f 77 |q%!4=(CascadeRow| 00003020 25 2a 38 29 0d 0e d8 30 20 20 20 71 25 21 31 36 |%*8)...0 q%!16| 00003030 3d 28 4f 53 5f 4d 59 25 2d 34 30 29 2d 28 43 61 |=(OS_MY%-40)-(Ca| 00003040 73 63 61 64 65 52 6f 77 25 2a 34 30 29 3a f4 20 |scadeRow%*40):. | 00003050 31 31 36 30 0d 0e e2 17 20 20 20 71 25 21 31 32 |1160.... q%!12| 00003060 3d 28 71 25 21 34 29 2b 73 78 25 0d 0e ec 30 20 |=(q%!4)+sx%...0 | 00003070 20 20 e7 20 28 28 71 25 21 31 32 29 3e 28 4f 53 | . ((q%!12)>(OS| 00003080 5f 4d 58 25 2d 34 30 29 29 20 71 25 21 31 32 3d |_MX%-40)) q%!12=| 00003090 28 4f 53 5f 4d 58 25 2d 34 30 29 0d 0e f6 17 20 |(OS_MX%-40).... | 000030a0 20 20 71 25 21 38 3d 28 71 25 21 31 36 29 2d 73 | q%!8=(q%!16)-s| 000030b0 79 25 0d 0f 00 1c 20 20 20 e7 20 28 28 71 25 21 |y%.... . ((q%!| 000030c0 38 29 3c 34 30 29 20 71 25 21 38 3d 34 30 0d 0f |8)<40) q%!8=40..| 000030d0 0a 20 20 20 20 4c 61 73 74 52 69 67 68 74 45 64 |. LastRightEd| 000030e0 67 65 25 3d 28 71 25 21 31 32 29 2b 34 38 0d 0f |ge%=(q%!12)+48..| 000030f0 14 07 20 20 cd 0d 0f 1e 04 0d 0f 28 04 0d 0f 32 |.. .......(...2| 00003100 1d 20 20 f4 20 45 6e 61 62 6c 65 20 77 69 6e 64 |. . Enable wind| 00003110 6f 77 20 27 64 72 69 66 74 27 0d 0f 3c 15 20 20 |ow 'drift'..<. | 00003120 e7 20 28 6f 78 25 3c 3e 71 25 21 34 29 20 8c 0d |. (ox%<>q%!4) ..| 00003130 0f 46 0f 20 20 20 6e 78 25 3d 71 25 21 34 0d 0f |.F. nx%=q%!4..| 00003140 50 19 20 20 20 73 78 25 3d 28 71 25 21 31 32 29 |P. sx%=(q%!12)| 00003150 2d 28 71 25 21 34 29 0d 0f 5a 12 20 20 20 64 78 |-(q%!4)..Z. dx| 00003160 25 3d 6e 78 25 2d 6f 78 25 0d 0f 64 16 20 20 20 |%=nx%-ox%..d. | 00003170 e7 20 28 94 28 64 78 25 29 3e 34 30 29 20 8c 0d |. (.(dx%)>40) ..| 00003180 0f 6e 1b 20 20 20 20 6e 78 25 3d 6f 78 25 2b 28 |.n. nx%=ox%+(| 00003190 b4 28 64 78 25 29 2a 34 30 29 0d 0f 78 1e 20 20 |.(dx%)*40)..x. | 000031a0 20 20 71 25 21 34 3d 6e 78 25 3a 71 25 21 31 32 | q%!4=nx%:q%!12| 000031b0 3d 6e 78 25 2b 73 78 25 0d 0f 82 08 20 20 20 cd |=nx%+sx%.... .| 000031c0 0d 0f 8c 07 20 20 cd 0d 0f 96 16 20 20 e7 20 28 |.... ..... . (| 000031d0 6f 79 25 3c 3e 71 25 21 31 36 29 20 8c 0d 0f a0 |oy%<>q%!16) ....| 000031e0 10 20 20 20 6e 79 25 3d 71 25 21 31 36 0d 0f aa |. ny%=q%!16...| 000031f0 19 20 20 20 73 79 25 3d 28 71 25 21 31 36 29 2d |. sy%=(q%!16)-| 00003200 28 71 25 21 38 29 0d 0f b4 12 20 20 20 64 79 25 |(q%!8).... dy%| 00003210 3d 6e 79 25 2d 6f 79 25 0d 0f be 16 20 20 20 e7 |=ny%-oy%.... .| 00003220 20 28 94 28 64 79 25 29 3e 34 30 29 20 8c 0d 0f | (.(dy%)>40) ...| 00003230 c8 1b 20 20 20 20 6e 79 25 3d 6f 79 25 2b 28 b4 |.. ny%=oy%+(.| 00003240 28 64 79 25 29 2a 34 30 29 0d 0f d2 1e 20 20 20 |(dy%)*40).... | 00003250 20 71 25 21 31 36 3d 6e 79 25 3a 71 25 21 38 3d | q%!16=ny%:q%!8=| 00003260 6e 79 25 2d 73 79 25 0d 0f dc 08 20 20 20 cd 0d |ny%-sy%.... ..| 00003270 0f e6 07 20 20 cd 0d 0f f0 04 0d 0f fa 33 20 20 |... ........3 | 00003280 f4 20 48 61 76 69 6e 67 20 61 6c 6c 6f 77 65 64 |. Having allowed| 00003290 20 73 70 61 63 65 20 66 6f 72 20 74 68 69 73 20 | space for this | 000032a0 77 69 6e 64 6f 77 20 69 6e 20 74 68 65 0d 10 04 |window in the...| 000032b0 33 20 20 f4 20 77 69 6e 64 6f 77 20 63 61 73 63 |3 . window casc| 000032c0 61 64 65 2c 20 61 72 65 20 77 65 20 73 75 72 65 |ade, are we sure| 000032d0 20 77 65 20 77 61 6e 74 20 74 6f 20 6d 6f 76 65 | we want to move| 000032e0 0d 10 0e 14 20 20 f4 20 69 74 20 6a 75 73 74 20 |.... . it just | 000032f0 79 65 74 3f 0d 10 18 06 20 20 0d 10 22 19 20 20 |yet?.... ..". | 00003300 e7 20 28 52 65 6f 70 65 6e 46 6c 61 67 25 3d b9 |. (ReopenFlag%=.| 00003310 29 20 8c 0d 10 2c 2e 20 20 20 c8 99 20 22 58 57 |) ...,. .. "XW| 00003320 69 6d 70 5f 53 65 6e 64 4d 65 73 73 61 67 65 22 |imp_SendMessage"| 00003330 2c 32 2c 71 25 2c 43 75 72 72 65 6e 74 57 69 6e |,2,q%,CurrentWin| 00003340 25 0d 10 36 07 20 20 cd 0d 10 40 06 20 20 0d 10 |%..6. ...@. ..| 00003350 4a 11 20 20 63 61 73 63 61 64 65 25 2b 3d 31 0d |J. cascade%+=1.| 00003360 10 54 06 20 20 0d 10 5e 06 20 cd 0d 10 68 06 20 |.T. ..^. ...h. | 00003370 cd 0d 10 72 05 e1 0d 10 7c 04 0d 10 86 33 f4 20 |...r....|....3. | 00003380 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 000033a0 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d 10 90 |*************...| 000033b0 04 0d 10 9a 14 dd f2 41 6e 69 6d 61 74 65 49 63 |.......AnimateIc| 000033c0 6f 6e 42 61 72 0d 10 a4 30 24 69 63 6f 6e 62 61 |onBar...0$iconba| 000033d0 72 64 61 74 61 25 3d 49 63 6f 6e 42 61 72 41 6e |rdata%=IconBarAn| 000033e0 69 6d 24 28 49 63 6f 6e 42 61 72 41 6e 69 6d 53 |im$(IconBarAnimS| 000033f0 74 65 70 25 29 0d 10 ae 25 49 63 6f 6e 42 61 72 |tep%)...%IconBar| 00003400 41 6e 69 6d 53 74 65 70 25 2b 3d 49 63 6f 6e 42 |AnimStep%+=IconB| 00003410 61 72 41 6e 69 6d 44 69 72 25 0d 10 b8 40 e7 20 |arAnimDir%...@. | 00003420 28 49 63 6f 6e 42 61 72 41 6e 69 6d 53 74 65 70 |(IconBarAnimStep| 00003430 25 3c 30 20 84 20 49 63 6f 6e 42 61 72 41 6e 69 |%<0 . IconBarAni| 00003440 6d 53 74 65 70 25 3d 49 63 6f 6e 42 61 72 41 6e |mStep%=IconBarAn| 00003450 69 6d 53 69 7a 65 25 29 20 8c 0d 10 c2 16 49 63 |imSize%) .....Ic| 00003460 6f 6e 42 61 72 41 6e 69 6d 53 74 65 70 25 3d 30 |onBarAnimStep%=0| 00003470 0d 10 cc 2b f4 20 20 49 63 6f 6e 42 61 72 41 6e |...+. IconBarAn| 00003480 69 6d 44 69 72 25 20 3d 20 49 63 6f 6e 42 61 72 |imDir% = IconBar| 00003490 41 6e 69 6d 44 69 72 25 2a 2d 31 0d 10 d6 27 f4 |AnimDir%*-1...'.| 000034a0 20 49 63 6f 6e 42 61 72 41 6e 69 6d 53 74 65 70 | IconBarAnimStep| 000034b0 25 2b 3d 49 63 6f 6e 42 61 72 41 6e 69 6d 44 69 |%+=IconBarAnimDi| 000034c0 72 25 0d 10 e0 05 cd 0d 10 ea 33 f4 20 41 63 74 |r%........3. Act| 000034d0 69 76 61 74 65 20 61 6e 20 75 70 64 61 74 65 20 |ivate an update | 000034e0 6f 6e 20 74 68 65 20 74 61 73 6b 20 62 61 72 20 |on the task bar | 000034f0 69 63 6f 6e 20 2e 2e 2e 2e 2e 0d 10 f4 0f 21 62 |icon .........!b| 00003500 6c 6f 63 6b 32 25 3d 2d 32 0d 10 fe 1c 62 6c 6f |lock2%=-2....blo| 00003510 63 6b 32 25 21 34 3d 69 63 6f 6e 62 61 72 68 61 |ck2%!4=iconbarha| 00003520 6e 64 6c 65 25 0d 11 08 22 c8 99 22 57 69 6d 70 |ndle%...".."Wimp| 00003530 5f 47 65 74 49 63 6f 6e 53 74 61 74 65 22 2c 2c |_GetIconState",,| 00003540 62 6c 6f 63 6b 32 25 0d 11 12 28 62 6c 6f 63 6b |block2%...(block| 00003550 32 25 21 38 3d 30 3a f4 20 44 6f 6e 27 74 20 63 |2%!8=0:. Don't c| 00003560 68 61 6e 67 65 20 61 6e 79 74 68 69 6e 67 2c 0d |hange anything,.| 00003570 11 1c 2c 62 6c 6f 63 6b 32 25 21 31 32 3d 30 3a |..,block2%!12=0:| 00003580 f4 20 4a 75 73 74 20 73 69 67 6e 61 6c 20 61 6e |. Just signal an| 00003590 20 75 70 64 61 74 65 20 2e 2e 2e 0d 11 26 22 c8 | update .....&".| 000035a0 99 22 57 69 6d 70 5f 53 65 74 49 63 6f 6e 53 74 |."Wimp_SetIconSt| 000035b0 61 74 65 22 2c 2c 62 6c 6f 63 6b 32 25 0d 11 30 |ate",,block2%..0| 000035c0 05 e1 0d 11 3a 04 0d 11 44 33 f4 20 2a 2a 2a 2a |....:...D3. ****| 000035d0 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 000035f0 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d 11 4e 32 f4 20 57 |*********..N2. W| 00003600 68 61 74 20 73 68 61 6c 6c 20 77 65 20 64 6f 20 |hat shall we do | 00003610 64 75 72 69 6e 67 20 74 68 65 20 69 64 6c 65 20 |during the idle | 00003620 77 69 6d 70 20 70 6f 6c 6c 20 3f 0d 11 58 2f f4 |wimp poll ?..X/.| 00003630 20 54 68 69 73 20 69 73 20 74 68 65 20 6d 6f 73 | This is the mos| 00003640 74 20 69 6d 70 6f 72 74 61 6e 74 20 61 73 70 65 |t important aspe| 00003650 63 74 20 6f 66 20 74 68 69 73 0d 11 62 32 f4 20 |ct of this..b2. | 00003660 70 72 6f 67 72 61 6d 20 61 6e 64 20 6f 6e 65 20 |program and one | 00003670 77 68 69 63 68 20 73 68 6f 75 6c 64 20 65 6e 61 |which should ena| 00003680 62 6c 65 20 61 20 6c 6f 74 20 6f 66 0d 11 6c 32 |ble a lot of..l2| 00003690 f4 20 63 68 61 6e 67 65 20 77 69 74 68 20 66 75 |. change with fu| 000036a0 74 75 72 65 20 76 65 72 73 69 6f 6e 73 20 6f 66 |ture versions of| 000036b0 20 74 68 65 20 73 6f 66 74 77 61 72 65 2e 0d 11 | the software...| 000036c0 76 33 f4 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |v3. ************| 000036d0 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 000036f0 2a 0d 11 80 11 dd f2 6e 75 6c 6c 5f 72 65 61 73 |*......null_reas| 00003700 6f 6e 0d 11 8a 0d ea 20 77 69 6e 64 6f 77 25 0d |on..... window%.| 00003710 11 94 23 c8 99 22 57 69 6d 70 5f 47 65 74 50 6f |..#.."Wimp_GetPo| 00003720 69 6e 74 65 72 49 6e 66 6f 22 2c 2c 62 6c 6f 63 |interInfo",,bloc| 00003730 6b 25 0d 11 9e 0f 58 25 3d 62 6c 6f 63 6b 25 21 |k%....X%=block%!| 00003740 30 0d 11 a8 0f 59 25 3d 62 6c 6f 63 6b 25 21 34 |0....Y%=block%!4| 00003750 0d 11 b2 15 77 69 6e 64 6f 77 25 3d 62 6c 6f 63 |....window%=bloc| 00003760 6b 25 21 31 32 0d 11 bc 1a 63 75 72 72 65 6e 74 |k%!12....current| 00003770 77 69 6e 64 6f 77 25 3d 77 69 6e 64 6f 77 25 0d |window%=window%.| 00003780 11 c6 12 f2 47 65 74 53 63 72 65 65 6e 53 69 7a |....GetScreenSiz| 00003790 65 0d 11 d0 04 0d 11 da 24 f4 20 41 72 65 20 61 |e.......$. Are a| 000037a0 6e 79 20 6d 6f 75 73 65 20 62 75 74 74 6f 6e 73 |ny mouse buttons| 000037b0 20 70 72 65 73 73 65 64 3f 0d 11 e4 2e f4 20 49 | pressed?..... I| 000037c0 66 20 6e 6f 74 20 74 68 65 6e 20 72 65 6f 72 67 |f not then reorg| 000037d0 61 6e 69 73 65 20 5b 63 61 73 63 61 64 65 5d 20 |anise [cascade] | 000037e0 77 69 6e 64 6f 77 73 0d 11 ee 1c e7 20 28 28 28 |windows..... (((| 000037f0 62 6c 6f 63 6b 25 21 38 29 20 80 20 37 29 3d 30 |block%!8) . 7)=0| 00003800 29 20 8c 0d 11 f8 0d 20 f2 63 61 73 63 61 64 65 |) ..... .cascade| 00003810 0d 12 02 05 cd 0d 12 0c 04 0d 12 16 2d f4 20 55 |............-. U| 00003820 70 64 61 74 65 20 74 68 65 20 74 61 73 6b 20 62 |pdate the task b| 00003830 61 72 20 69 63 6f 6e 20 65 61 63 68 20 57 49 4d |ar icon each WIM| 00003840 50 20 50 4f 4c 4c 0d 12 20 13 f2 41 6e 69 6d 61 |P POLL.. ..Anima| 00003850 74 65 49 63 6f 6e 42 61 72 0d 12 2a 04 0d 12 34 |teIconBar..*...4| 00003860 2d f4 20 49 66 20 74 68 65 20 74 61 73 6b 20 62 |-. If the task b| 00003870 61 72 20 74 6f 6f 6c 20 74 69 70 20 73 68 6f 77 |ar tool tip show| 00003880 73 20 74 68 65 20 54 49 4d 45 0d 12 3e 18 f4 20 |s the TIME..>.. | 00003890 74 68 65 6e 20 75 70 64 61 74 65 20 69 74 20 2e |then update it .| 000038a0 2e 2e 0d 12 48 25 e7 20 28 54 6f 6f 6c 54 69 70 |....H%. (ToolTip| 000038b0 25 3d 31 29 20 f2 55 70 64 61 74 65 54 6f 6f 6c |%=1) .UpdateTool| 000038c0 54 69 70 54 69 6d 65 0d 12 52 04 0d 12 5c 23 c8 |TipTime..R...\#.| 000038d0 99 22 57 69 6d 70 5f 47 65 74 50 6f 69 6e 74 65 |."Wimp_GetPointe| 000038e0 72 49 6e 66 6f 22 2c 2c 62 6c 6f 63 6b 25 0d 12 |rInfo",,block%..| 000038f0 66 0f 58 25 3d 62 6c 6f 63 6b 25 21 30 0d 12 70 |f.X%=block%!0..p| 00003900 0f 59 25 3d 62 6c 6f 63 6b 25 21 34 0d 12 7a 15 |.Y%=block%!4..z.| 00003910 77 69 6e 64 6f 77 25 3d 62 6c 6f 63 6b 25 21 31 |window%=block%!1| 00003920 32 0d 12 84 1a 63 75 72 72 65 6e 74 77 69 6e 64 |2....currentwind| 00003930 6f 77 25 3d 77 69 6e 64 6f 77 25 0d 12 8e 04 0d |ow%=window%.....| 00003940 12 98 28 f4 20 54 68 69 73 20 6d 61 79 20 62 65 |..(. This may be| 00003950 20 6e 65 65 64 65 64 20 74 6f 20 73 74 6f 70 20 | needed to stop | 00003960 66 6c 69 63 6b 65 72 0d 12 a2 0b f4 20 2a 66 78 |flicker..... *fx| 00003970 31 39 0d 12 ac 04 0d 12 b6 0a f4 45 4e 44 49 46 |19.........ENDIF| 00003980 0d 12 c0 23 f4 49 46 20 28 71 66 5f 74 69 6d 65 |...#.IF (qf_time| 00003990 72 3e 30 29 20 50 52 4f 43 66 6f 63 75 73 64 65 |r>0) PROCfocusde| 000039a0 6c 61 79 0d 12 ca 16 e7 20 28 58 25 3c 72 65 67 |lay..... (X%<reg| 000039b0 69 6f 6e 78 73 25 29 20 8c 0d 12 d4 12 f2 6c 65 |ionxs%) ......le| 000039c0 66 74 5f 63 6f 72 6e 65 72 3a e1 0d 12 de 05 cd |ft_corner:......| 000039d0 0d 12 e8 1f e7 20 28 58 25 3e 28 4f 53 5f 4d 58 |..... (X%>(OS_MX| 000039e0 25 2d 72 65 67 69 6f 6e 78 73 25 29 29 20 8c 0d |%-regionxs%)) ..| 000039f0 12 f2 13 f2 72 69 67 68 74 5f 63 6f 72 6e 65 72 |....right_corner| 00003a00 3a e1 0d 12 fc 05 cd 0d 13 06 23 f4 20 49 73 20 |:.........#. Is | 00003a10 50 6f 69 6e 74 65 72 20 6f 76 65 72 20 69 63 6f |Pointer over ico| 00003a20 6e 62 61 72 20 69 63 6f 6e 3f 0d 13 10 43 f4 20 |nbar icon?...C. | 00003a30 43 6c 6f 73 65 20 74 6f 6f 6c 74 69 70 20 69 66 |Close tooltip if| 00003a40 20 70 6f 69 6e 74 65 72 20 6d 6f 76 65 73 20 6f | pointer moves o| 00003a50 76 65 72 20 69 74 20 28 65 66 66 65 63 74 69 76 |ver it (effectiv| 00003a60 65 6c 79 20 70 75 73 68 20 74 69 70 29 0d 13 1a |ely push tip)...| 00003a70 6c f4 20 49 46 20 28 28 28 62 6c 6f 63 6b 25 21 |l. IF (((block%!| 00003a80 31 32 29 3d 2d 32 20 41 4e 44 20 28 62 6c 6f 63 |12)=-2 AND (bloc| 00003a90 6b 25 21 31 36 3d 69 63 6f 6e 62 61 72 68 61 6e |k%!16=iconbarhan| 00003aa0 64 6c 65 25 29 29 20 4f 52 20 28 77 69 6e 64 6f |dle%)) OR (windo| 00003ab0 77 25 3d 77 68 61 6e 64 6c 65 5f 74 6f 6f 6c 74 |w%=whandle_toolt| 00003ac0 69 70 25 20 41 4e 44 20 54 6f 6f 6c 54 69 70 25 |ip% AND ToolTip%| 00003ad0 3e 30 29 29 20 54 48 45 4e 0d 13 24 37 e7 20 28 |>0)) THEN..$7. (| 00003ae0 28 28 62 6c 6f 63 6b 25 21 31 32 29 3d 2d 32 20 |((block%!12)=-2 | 00003af0 80 20 28 62 6c 6f 63 6b 25 21 31 36 3d 69 63 6f |. (block%!16=ico| 00003b00 6e 62 61 72 68 61 6e 64 6c 65 25 29 29 29 20 8c |nbarhandle%))) .| 00003b10 0d 13 2e 15 f2 6d 6f 76 65 5f 6f 76 65 72 69 63 |.....move_overic| 00003b20 6f 6e 62 61 72 0d 13 38 05 cc 0d 13 42 11 4f 6c |onbar..8....B.Ol| 00003b30 64 54 6f 6f 6c 54 69 70 25 3d 30 0d 13 4c 04 0d |dToolTip%=0..L..| 00003b40 13 56 39 f4 49 46 20 28 28 28 54 49 4d 45 2d 74 |.V9.IF (((TIME-t| 00003b50 6f 6f 6c 74 69 70 5f 74 69 6d 65 72 25 29 3e 31 |ooltip_timer%)>1| 00003b60 30 30 29 20 41 4e 44 20 54 6f 6f 6c 54 69 70 25 |00) AND ToolTip%| 00003b70 3e 30 29 20 54 48 45 4e 0d 13 60 14 e7 20 28 54 |>0) THEN..`.. (T| 00003b80 6f 6f 6c 54 69 70 25 3e 30 29 20 8c 0d 13 6a 3a |oolTip%>0) ...j:| 00003b90 e7 20 28 62 6c 6f 63 6b 25 21 31 36 20 3c 3e 20 |. (block%!16 <> | 00003ba0 77 68 61 6e 64 6c 65 5f 74 6f 6f 6c 74 69 70 25 |whandle_tooltip%| 00003bb0 29 20 69 63 6f 6e 62 61 72 5f 74 69 6d 65 72 66 |) iconbar_timerf| 00003bc0 6c 61 67 25 3d 30 0d 13 74 11 f2 43 6c 6f 73 65 |lag%=0..t..Close| 00003bd0 54 6f 6f 6c 54 69 70 0d 13 7e 05 cc 0d 13 88 18 |ToolTip..~......| 00003be0 f4 69 63 6f 6e 62 61 72 5f 74 69 6d 65 72 25 3d |.iconbar_timer%=| 00003bf0 54 49 4d 45 0d 13 92 18 69 63 6f 6e 62 61 72 5f |TIME....iconbar_| 00003c00 74 69 6d 65 72 66 6c 61 67 25 3d 30 0d 13 9c 05 |timerflag%=0....| 00003c10 cd 0d 13 a6 05 cd 0d 13 b0 28 f4 49 46 20 28 77 |.........(.IF (w| 00003c20 69 6e 64 6f 77 25 3d 2d 32 29 20 66 69 72 73 74 |indow%=-2) first| 00003c30 6d 65 6e 75 68 61 6e 64 6c 65 25 3d 2d 32 0d 13 |menuhandle%=-2..| 00003c40 ba 41 f4 49 46 20 28 77 69 6e 64 6f 77 25 3c 3e |.A.IF (window%<>| 00003c50 2d 32 29 20 50 52 4f 43 70 6f 69 6e 74 65 72 6e |-2) PROCpointern| 00003c60 6f 74 6f 6e 69 63 6f 6e 62 61 72 3a 52 45 4d 20 |otoniconbar:REM | 00003c70 4d 75 73 74 20 63 6f 6d 65 20 66 69 72 73 74 0d |Must come first.| 00003c80 13 c4 49 e7 20 28 28 58 25 3e 72 65 67 69 6f 6e |..I. ((X%>region| 00003c90 78 73 25 20 80 20 58 25 3c 28 4f 53 5f 4d 58 25 |xs% . X%<(OS_MX%| 00003ca0 2d 72 65 67 69 6f 6e 78 73 25 29 29 20 84 20 59 |-regionxs%)) . Y| 00003cb0 25 3e 72 65 67 69 6f 6e 79 73 25 29 20 f2 6f 75 |%>regionys%) .ou| 00003cc0 74 6f 66 66 6f 63 75 73 0d 13 ce 53 f4 49 46 20 |toffocus...S.IF | 00003cd0 28 28 58 25 3e 72 65 67 69 6f 6e 78 73 25 20 41 |((X%>regionxs% A| 00003ce0 4e 44 20 58 25 3c 28 4f 53 5f 4d 58 25 2d 72 65 |ND X%<(OS_MX%-re| 00003cf0 67 69 6f 6e 78 73 25 29 29 20 41 4e 44 20 59 25 |gionxs%)) AND Y%| 00003d00 3d 30 29 20 50 52 4f 43 70 6f 69 6e 74 65 72 6f |=0) PROCpointero| 00003d10 6e 62 6f 74 74 6f 6d 65 64 67 65 0d 13 d8 0e e7 |nbottomedge.....| 00003d20 20 28 59 25 3d 30 29 20 8c 0d 13 e2 2d e7 20 28 | (Y%=0) ....-. (| 00003d30 42 6f 74 74 6f 6d 45 64 67 65 46 6c 61 67 3d 30 |BottomEdgeFlag=0| 00003d40 29 20 f2 70 6f 69 6e 74 65 72 6f 6e 62 6f 74 74 |) .pointeronbott| 00003d50 6f 6d 65 64 67 65 0d 13 ec 05 cc 0d 13 f6 14 42 |omedge.........B| 00003d60 6f 74 74 6f 6d 45 64 67 65 46 6c 61 67 3d 30 0d |ottomEdgeFlag=0.| 00003d70 14 00 05 cd 0d 14 0a 04 0d 14 14 15 f4 50 52 4f |.............PRO| 00003d80 43 43 6c 6f 73 65 54 6f 6f 6c 54 69 70 0d 14 1e |CCloseToolTip...| 00003d90 17 f4 50 52 4f 43 4f 70 65 6e 54 6f 6f 6c 54 69 |..PROCOpenToolTi| 00003da0 70 28 32 29 0d 14 28 05 e1 0d 14 32 04 0d 14 3c |p(2)..(....2...<| 00003db0 39 f4 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |9. *************| 00003dc0 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 00003de0 2a 2a 2a 2a 2a 2a 0d 14 46 04 0d 14 50 19 dd f2 |******..F...P...| 00003df0 70 6f 69 6e 74 65 72 6f 6e 62 6f 74 74 6f 6d 65 |pointeronbottome| 00003e00 64 67 65 0d 14 5a 14 ea 20 73 74 61 63 6b 70 6f |dge..Z.. stackpo| 00003e10 73 69 74 69 6f 6e 25 0d 14 64 34 f4 20 49 73 20 |sition%..d4. Is | 00003e20 69 63 6f 6e 62 61 72 20 61 74 20 74 6f 70 20 6f |iconbar at top o| 00003e30 66 20 73 74 61 63 6b 3f 20 49 66 20 6e 6f 74 20 |f stack? If not | 00003e40 6d 61 6b 65 20 69 74 20 73 6f 2e 0d 14 6e 1e f4 |make it so...n..| 00003e50 53 59 53 22 57 69 6d 70 5f 50 72 6f 63 65 73 73 |SYS"Wimp_Process| 00003e60 4b 65 79 22 2c 26 31 64 63 0d 14 78 04 0d 14 82 |Key",&1dc..x....| 00003e70 30 f4 20 50 52 4f 43 65 72 72 6f 72 28 22 50 6f |0. PROCerror("Po| 00003e80 69 6e 74 65 72 20 6f 6e 20 62 6f 74 74 6f 6d 20 |inter on bottom | 00003e90 65 64 67 65 2e 22 2b 43 48 52 24 30 29 0d 14 8c |edge."+CHR$0)...| 00003ea0 31 f4 20 4f 70 65 6e 20 75 70 20 73 74 61 72 74 |1. Open up start| 00003eb0 20 6d 65 6e 75 20 69 66 20 69 74 27 73 20 6e 6f | menu if it's no| 00003ec0 74 20 61 6c 72 65 61 64 79 20 6f 70 65 6e 0d 14 |t already open..| 00003ed0 96 14 42 6f 74 74 6f 6d 45 64 67 65 46 6c 61 67 |..BottomEdgeFlag| 00003ee0 3d 31 0d 14 a0 1b f4 20 43 6c 6f 73 65 20 72 65 |=1..... Close re| 00003ef0 6c 65 76 61 6e 74 20 77 69 6e 64 6f 77 0d 14 aa |levant window...| 00003f00 1e f4 53 59 53 20 22 57 69 6d 70 5f 43 72 65 61 |..SYS "Wimp_Crea| 00003f10 74 65 4d 65 6e 75 22 2c 2c 2d 31 0d 14 b4 15 f4 |teMenu",,-1.....| 00003f20 20 4f 70 65 6e 20 73 74 61 72 74 20 6d 65 6e 75 | Open start menu| 00003f30 0d 14 be 1a f4 50 52 4f 43 63 6c 69 63 6b 5f 69 |.....PROCclick_i| 00003f40 63 6f 6e 62 61 72 6d 65 6e 75 0d 14 c8 0c f4 45 |conbarmenu.....E| 00003f50 4e 44 50 52 4f 43 0d 14 d2 04 0d 14 dc 0f f4 21 |NDPROC.........!| 00003f60 62 6c 6f 63 6b 25 3d 2d 32 0d 14 e6 25 f4 53 59 |block%=-2...%.SY| 00003f70 53 22 57 69 6d 70 5f 47 65 74 57 69 6e 64 6f 77 |S"Wimp_GetWindow| 00003f80 53 74 61 74 65 22 2c 2c 62 6c 6f 63 6b 25 0d 14 |State",,block%..| 00003f90 f0 1d f4 73 74 61 63 6b 70 6f 73 69 74 69 6f 6e |...stackposition| 00003fa0 25 3d 62 6c 6f 63 6b 25 21 32 38 0d 14 fa 21 f4 |%=block%!28...!.| 00003fb0 49 46 20 28 73 74 61 63 6b 70 6f 73 69 74 69 6f |IF (stackpositio| 00003fc0 6e 25 3c 3e 2d 31 29 20 54 48 45 4e 0d 15 04 11 |n%<>-1) THEN....| 00003fd0 f4 62 6c 6f 63 6b 25 21 32 38 3d 2d 31 0d 15 0e |.block%!28=-1...| 00003fe0 21 f4 53 59 53 22 57 69 6d 70 5f 4f 70 65 6e 57 |!.SYS"Wimp_OpenW| 00003ff0 69 6e 64 6f 77 22 2c 2c 62 6c 6f 63 6b 25 0d 15 |indow",,block%..| 00004000 18 20 f4 20 54 6f 67 67 6c 65 20 69 63 6f 6e 20 |. . Toggle icon | 00004010 62 61 72 20 62 61 63 6b 2f 66 72 6f 6e 74 0d 15 |bar back/front..| 00004020 22 1c c8 99 22 57 69 6d 70 5f 50 72 6f 63 65 73 |"..."Wimp_Proces| 00004030 73 4b 65 79 22 2c 26 31 64 63 0d 15 2c 04 0d 15 |sKey",&1dc..,...| 00004040 36 30 f4 20 52 65 6f 70 65 6e 20 64 75 6d 6d 79 |60. Reopen dummy| 00004050 62 61 63 6b 20 77 69 6e 64 6f 77 20 61 74 20 62 |back window at b| 00004060 6f 74 74 6f 6d 20 6f 66 20 73 74 61 63 6b 0d 15 |ottom of stack..| 00004070 40 1e 21 62 6c 6f 63 6b 25 3d 77 68 61 6e 64 6c |@.!block%=whandl| 00004080 65 5f 64 75 6d 6d 79 62 61 63 6b 25 0d 15 4a 23 |e_dummyback%..J#| 00004090 c8 99 22 57 69 6d 70 5f 47 65 74 57 69 6e 64 6f |.."Wimp_GetWindo| 000040a0 77 53 74 61 74 65 22 2c 2c 62 6c 6f 63 6b 25 0d |wState",,block%.| 000040b0 15 54 22 62 6c 6f 63 6b 25 21 38 3d 2d 31 30 32 |.T"block%!8=-102| 000040c0 34 3a 62 6c 6f 63 6b 25 21 31 36 3d 2d 31 30 32 |4:block%!16=-102| 000040d0 34 0d 15 5e 10 62 6c 6f 63 6b 25 21 32 38 3d 2d |4..^.block%!28=-| 000040e0 32 0d 15 68 1f c8 99 22 57 69 6d 70 5f 4f 70 65 |2..h..."Wimp_Ope| 000040f0 6e 57 69 6e 64 6f 77 22 2c 2c 62 6c 6f 63 6b 25 |nWindow",,block%| 00004100 0d 15 72 28 61 66 74 65 72 25 3d 77 68 61 6e 64 |..r(after%=whand| 00004110 6c 65 5f 64 75 6d 6d 79 62 61 63 6b 25 3a 63 61 |le_dummyback%:ca| 00004120 73 63 61 64 65 25 3d 30 0d 15 7c 04 0d 15 86 05 |scade%=0..|.....| 00004130 e1 0d 15 90 04 0d 15 9a 19 dd f2 70 6f 69 6e 74 |...........point| 00004140 65 72 6e 6f 74 6f 6e 69 63 6f 6e 62 61 72 0d 15 |ernotoniconbar..| 00004150 a4 0d f4 20 45 4e 44 50 52 4f 43 0d 15 ae 37 f4 |... ENDPROC...7.| 00004160 20 49 73 20 69 63 6f 6e 62 61 72 20 6f 6e 20 62 | Is iconbar on b| 00004170 6f 74 74 6f 6d 20 6f 66 20 73 74 61 63 6b 3f 20 |ottom of stack? | 00004180 49 66 20 6e 6f 74 20 6d 61 6b 65 20 69 74 20 73 |If not make it s| 00004190 6f 2f 0d 15 b8 3d f4 20 4e 6f 20 61 6c 6c 6f 77 |o/...=. No allow| 000041a0 65 64 20 74 6f 20 6d 61 6e 75 61 6c 6c 79 20 6f |ed to manually o| 000041b0 70 65 6e 20 69 63 6f 6e 62 61 72 20 73 6f 20 75 |pen iconbar so u| 000041c0 73 65 20 6f 75 72 20 69 6e 74 65 72 6e 61 6c 0d |se our internal.| 000041d0 15 c2 0b f4 20 76 61 6c 75 65 0d 15 cc 47 e7 20 |.... value...G. | 000041e0 28 54 6f 6f 6c 54 69 70 25 3d 30 20 84 20 28 54 |(ToolTip%=0 . (T| 000041f0 6f 6f 6c 54 69 70 25 3c 3e 30 20 80 20 63 75 72 |oolTip%<>0 . cur| 00004200 72 65 6e 74 77 69 6e 64 6f 77 25 3c 3e 77 68 61 |rentwindow%<>wha| 00004210 6e 64 6c 65 5f 74 6f 6f 6c 74 69 70 25 29 29 20 |ndle_tooltip%)) | 00004220 8c 0d 15 d6 39 e7 20 66 69 72 73 74 6d 65 6e 75 |....9. firstmenu| 00004230 68 61 6e 64 6c 65 25 3d 2d 32 20 66 69 72 73 74 |handle%=-2 first| 00004240 6d 65 6e 75 68 61 6e 64 6c 65 25 3d 63 75 72 72 |menuhandle%=curr| 00004250 65 6e 74 77 69 6e 64 6f 77 25 0d 15 e0 05 cd 0d |entwindow%......| 00004260 15 ea 04 0d 15 f4 0e 21 62 6c 6f 63 6b 25 3d 2d |.......!block%=-| 00004270 32 0d 15 fe 23 c8 99 22 57 69 6d 70 5f 47 65 74 |2...#.."Wimp_Get| 00004280 57 69 6e 64 6f 77 53 74 61 74 65 22 2c 2c 62 6c |WindowState",,bl| 00004290 6f 63 6b 25 0d 16 08 1c 73 74 61 63 6b 70 6f 73 |ock%....stackpos| 000042a0 69 74 69 6f 6e 25 3d 62 6c 6f 63 6b 25 21 32 38 |ition%=block%!28| 000042b0 0d 16 12 2f f4 49 46 20 28 73 74 61 63 6b 70 6f |.../.IF (stackpo| 000042c0 73 69 74 69 6f 6e 25 3d 6f 6c 64 73 74 61 63 6b |sition%=oldstack| 000042d0 70 6f 73 69 74 69 6f 6e 25 29 20 54 48 45 4e 0d |position%) THEN.| 000042e0 16 1c 2b e7 20 28 73 74 61 63 6b 70 6f 73 69 74 |..+. (stackposit| 000042f0 69 6f 6e 25 3c 3e 6f 6c 64 73 74 61 63 6b 70 6f |ion%<>oldstackpo| 00004300 73 69 74 69 6f 6e 25 29 20 8c 0d 16 26 11 f4 62 |sition%) ...&..b| 00004310 6c 6f 63 6b 25 21 32 38 3d 2d 32 0d 16 30 22 f4 |lock%!28=-2..0".| 00004320 53 59 53 22 57 69 6d 70 5f 43 6c 6f 73 65 57 69 |SYS"Wimp_CloseWi| 00004330 6e 64 6f 77 22 2c 2c 62 6c 6f 63 6b 25 0d 16 3a |ndow",,block%..:| 00004340 40 e7 20 28 63 75 72 72 65 6e 74 77 69 6e 64 6f |@. (currentwindo| 00004350 77 25 3c 3e 66 69 72 73 74 6d 65 6e 75 68 61 6e |w%<>firstmenuhan| 00004360 64 6c 65 25 20 80 20 66 69 72 73 74 6d 65 6e 75 |dle% . firstmenu| 00004370 68 61 6e 64 6c 65 25 3e 2d 32 29 20 8c 0d 16 44 |handle%>-2) ...D| 00004380 1c c8 99 22 57 69 6d 70 5f 50 72 6f 63 65 73 73 |..."Wimp_Process| 00004390 4b 65 79 22 2c 26 31 64 63 0d 16 4e 17 66 69 72 |Key",&1dc..N.fir| 000043a0 73 74 6d 65 6e 75 68 61 6e 64 6c 65 25 3d 2d 33 |stmenuhandle%=-3| 000043b0 0d 16 58 0a f4 45 4e 44 49 46 0d 16 62 0e 21 62 |..X..ENDIF..b.!b| 000043c0 6c 6f 63 6b 25 3d 2d 32 0d 16 6c 23 c8 99 22 57 |lock%=-2..l#.."W| 000043d0 69 6d 70 5f 47 65 74 57 69 6e 64 6f 77 53 74 61 |imp_GetWindowSta| 000043e0 74 65 22 2c 2c 62 6c 6f 63 6b 25 0d 16 76 1c 73 |te",,block%..v.s| 000043f0 74 61 63 6b 70 6f 73 69 74 69 6f 6e 25 3d 62 6c |tackposition%=bl| 00004400 6f 63 6b 25 21 32 38 0d 16 80 3d f4 49 46 20 28 |ock%!28...=.IF (| 00004410 73 74 61 63 6b 70 6f 73 69 74 69 6f 6e 25 3c 3e |stackposition%<>| 00004420 2d 31 29 20 6f 6c 64 73 74 61 63 6b 70 6f 73 69 |-1) oldstackposi| 00004430 74 69 6f 6e 25 3d 73 74 61 63 6b 70 6f 73 69 74 |tion%=stackposit| 00004440 69 6f 6e 25 0d 16 8a 24 6f 6c 64 73 74 61 63 6b |ion%...$oldstack| 00004450 70 6f 73 69 74 69 6f 6e 25 3d 73 74 61 63 6b 70 |position%=stackp| 00004460 6f 73 69 74 69 6f 6e 25 0d 16 94 05 cd 0d 16 9e |osition%........| 00004470 05 cd 0d 16 a8 05 e1 0d 16 b2 04 0d 16 bc 3e f4 |..............>.| 00004480 20 49 46 20 28 69 6e 74 65 72 6e 61 6c 73 74 61 | IF (internalsta| 00004490 63 6b 70 6f 73 69 74 69 6f 6e 25 3d 2d 31 20 41 |ckposition%=-1 A| 000044a0 4e 44 20 63 75 72 72 65 6e 74 77 69 6e 64 6f 77 |ND currentwindow| 000044b0 25 3e 30 29 20 54 48 45 4e 0d 16 c6 1f f4 20 53 |%>0) THEN..... S| 000044c0 59 53 22 57 69 6d 70 5f 50 72 6f 63 65 73 73 4b |YS"Wimp_ProcessK| 000044d0 65 79 22 2c 26 31 64 63 0d 16 d0 37 f4 20 50 52 |ey",&1dc...7. PR| 000044e0 4f 43 65 72 72 6f 72 28 22 57 69 6e 64 6f 77 20 |OCerror("Window | 000044f0 3a 20 22 2b 53 54 52 24 28 63 75 72 72 65 6e 74 |: "+STR$(current| 00004500 77 69 6e 64 6f 77 25 29 2b 43 48 52 24 30 29 0d |window%)+CHR$0).| 00004510 16 da 2d f4 20 69 6e 74 65 72 6e 61 6c 73 74 61 |..-. internalsta| 00004520 63 6b 70 6f 73 69 74 69 6f 6e 25 3d 2d 32 3a 52 |ckposition%=-2:R| 00004530 45 4d 20 41 74 20 62 6f 74 74 6f 6d 0d 16 e4 0b |EM At bottom....| 00004540 f4 20 45 4e 44 49 46 0d 16 ee 0d f4 20 45 4e 44 |. ENDIF..... END| 00004550 50 52 4f 43 0d 16 f8 04 0d 17 02 10 dd f2 6f 75 |PROC..........ou| 00004560 74 6f 66 66 6f 63 75 73 0d 17 0c 28 e7 20 28 69 |toffocus...(. (i| 00004570 6e 5f 6c 65 66 74 72 65 67 69 6f 6e 29 20 8c 20 |n_leftregion) . | 00004580 f2 6c 65 61 76 65 6c 65 66 74 72 65 67 69 6f 6e |.leaveleftregion| 00004590 0d 17 16 2a e7 20 28 69 6e 5f 72 69 67 68 74 72 |...*. (in_rightr| 000045a0 65 67 69 6f 6e 29 20 8c 20 f2 6c 65 61 76 65 72 |egion) . .leaver| 000045b0 69 67 68 74 72 65 67 69 6f 6e 0d 17 20 0e 71 66 |ightregion.. .qf| 000045c0 5f 74 69 6d 65 72 3d 91 0d 17 2a 05 e1 0d 17 34 |_timer=...*....4| 000045d0 04 0d 17 3e 15 dd f2 6c 65 61 76 65 6c 65 66 74 |...>...leaveleft| 000045e0 72 65 67 69 6f 6e 0d 17 48 13 69 6e 5f 6c 65 66 |region..H.in_lef| 000045f0 74 72 65 67 69 6f 6e 3d a3 0d 17 52 05 e1 0d 17 |tregion=...R....| 00004600 5c 04 0d 17 66 16 dd f2 6c 65 61 76 65 72 69 67 |\...f...leaverig| 00004610 68 74 72 65 67 69 6f 6e 0d 17 70 14 69 6e 5f 72 |htregion..p.in_r| 00004620 69 67 68 74 72 65 67 69 6f 6e 3d a3 0d 17 7a 05 |ightregion=...z.| 00004630 e1 0d 17 84 04 0d 17 8e 10 dd f2 66 6f 63 75 73 |...........focus| 00004640 64 65 6c 61 79 0d 17 98 36 e7 20 28 28 91 2d 70 |delay...6. ((.-p| 00004650 61 75 73 65 25 29 3e 71 66 5f 74 69 6d 65 72 29 |ause%)>qf_timer)| 00004660 20 8c 20 71 66 5f 74 69 6d 65 72 3d 2d 31 3a f2 | . qf_timer=-1:.| 00004670 4f 70 65 6e 49 6e 66 6f 42 6f 78 0d 17 a2 05 e1 |OpenInfoBox.....| 00004680 0d 17 ac 04 0d 17 b6 11 dd f2 6c 65 66 74 5f 63 |..........left_c| 00004690 6f 72 6e 65 72 0d 17 c0 2c e7 20 28 69 6e 5f 6c |orner...,. (in_l| 000046a0 65 66 74 72 65 67 69 6f 6e 3d a3 29 20 65 63 5f |eftregion=.) ec_| 000046b0 74 69 6d 65 72 3d 91 3a 65 63 5f 66 6c 61 67 3d |timer=.:ec_flag=| 000046c0 a3 0d 17 ca 13 69 6e 5f 6c 65 66 74 72 65 67 69 |.....in_leftregi| 000046d0 6f 6e 3d b9 0d 17 d4 23 f4 20 43 68 65 63 6b 20 |on=....#. Check | 000046e0 69 66 20 77 69 6e 64 6f 77 73 20 6e 65 65 64 20 |if windows need | 000046f0 6f 70 65 6e 69 6e 67 0d 17 de 24 e7 20 28 91 2d |opening...$. (.-| 00004700 65 63 5f 74 69 6d 65 72 3e 3d 35 30 20 80 20 65 |ec_timer>=50 . e| 00004710 63 5f 66 6c 61 67 3d a3 29 20 8c 0d 17 e8 1a f2 |c_flag=.) ......| 00004720 72 65 6f 70 65 6e 66 69 6c 65 72 3a 65 63 5f 66 |reopenfiler:ec_f| 00004730 6c 61 67 3d b9 0d 17 f2 05 cd 0d 17 fc 04 0d 18 |lag=............| 00004740 06 05 e1 0d 18 10 04 0d 18 1a 12 dd f2 72 69 67 |.............rig| 00004750 68 74 5f 63 6f 72 6e 65 72 0d 18 24 2d e7 20 28 |ht_corner..$-. (| 00004760 69 6e 5f 72 69 67 68 74 72 65 67 69 6f 6e 3d a3 |in_rightregion=.| 00004770 29 20 65 63 5f 74 69 6d 65 72 3d 91 3a 65 63 5f |) ec_timer=.:ec_| 00004780 66 6c 61 67 3d a3 0d 18 2e 14 69 6e 5f 72 69 67 |flag=.....in_rig| 00004790 68 74 72 65 67 69 6f 6e 3d b9 0d 18 38 23 f4 20 |htregion=...8#. | 000047a0 43 68 65 63 6b 20 69 66 20 77 69 6e 64 6f 77 73 |Check if windows| 000047b0 20 6e 65 65 64 20 63 6c 6f 73 69 6e 67 0d 18 42 | need closing..B| 000047c0 33 f4 49 46 20 28 54 49 4d 45 2d 65 63 5f 74 69 |3.IF (TIME-ec_ti| 000047d0 6d 65 72 3e 3d 31 30 30 20 41 4e 44 20 65 63 5f |mer>=100 AND ec_| 000047e0 66 6c 61 67 3d 46 41 4c 53 45 29 20 54 48 45 4e |flag=FALSE) THEN| 000047f0 0d 18 4c 13 e7 20 28 65 63 5f 66 6c 61 67 3d a3 |..L.. (ec_flag=.| 00004800 29 20 8c 0d 18 56 27 f2 63 6c 6f 73 65 66 69 6c |) ...V'.closefil| 00004810 65 72 3a f2 43 6c 6f 73 65 49 6e 66 6f 42 6f 78 |er:.CloseInfoBox| 00004820 3a 65 63 5f 66 6c 61 67 3d b9 0d 18 60 05 cd 0d |:ec_flag=...`...| 00004830 18 6a 05 e1 0d 18 74 04 0d 18 7e 39 f4 20 2a 2a |.j....t...~9. **| 00004840 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 00004870 2a 0d 18 88 04 0d 18 92 11 dd f2 4f 70 65 6e 49 |*..........OpenI| 00004880 6e 66 6f 42 6f 78 0d 18 9c 19 21 62 6c 6f 63 6b |nfoBox....!block| 00004890 25 3d 77 68 61 6e 64 6c 65 5f 69 6e 66 6f 25 0d |%=whandle_info%.| 000048a0 18 a6 23 c8 99 22 57 69 6d 70 5f 47 65 74 57 69 |..#.."Wimp_GetWi| 000048b0 6e 64 6f 77 53 74 61 74 65 22 2c 2c 62 6c 6f 63 |ndowState",,bloc| 000048c0 6b 25 0d 18 b0 1f c8 99 22 57 69 6d 70 5f 4f 70 |k%......"Wimp_Op| 000048d0 65 6e 57 69 6e 64 6f 77 22 2c 2c 62 6c 6f 63 6b |enWindow",,block| 000048e0 25 0d 18 ba 05 e1 0d 18 c4 04 0d 18 ce 12 dd f2 |%...............| 000048f0 43 6c 6f 73 65 49 6e 66 6f 42 6f 78 0d 18 d8 19 |CloseInfoBox....| 00004900 21 62 6c 6f 63 6b 25 3d 77 68 61 6e 64 6c 65 5f |!block%=whandle_| 00004910 69 6e 66 6f 25 0d 18 e2 20 c8 99 22 57 69 6d 70 |info%... .."Wimp| 00004920 5f 43 6c 6f 73 65 57 69 6e 64 6f 77 22 2c 2c 62 |_CloseWindow",,b| 00004930 6c 6f 63 6b 25 0d 18 ec 05 e1 0d 18 f6 04 0d 19 |lock%...........| 00004940 00 39 f4 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |.9. ************| 00004950 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 00004970 2a 2a 2a 2a 2a 2a 2a 0d 19 0a 04 0d 19 14 13 dd |*******.........| 00004980 f2 43 72 65 61 74 65 54 6f 6f 6c 54 69 70 0d 19 |.CreateToolTip..| 00004990 1e 0e ea 20 58 4f 66 66 73 65 74 25 0d 19 28 31 |... XOffset%..(1| 000049a0 f4 20 43 72 65 61 74 65 20 74 68 65 20 74 6f 6f |. Create the too| 000049b0 6c 74 69 70 20 61 6e 64 20 64 75 6d 6d 79 20 67 |ltip and dummy g| 000049c0 6c 6f 62 61 6c 20 77 69 6e 64 6f 77 73 0d 19 32 |lobal windows..2| 000049d0 36 f4 20 54 68 65 20 74 6f 6f 6c 74 69 70 20 77 |6. The tooltip w| 000049e0 69 6e 64 6f 77 20 64 69 73 70 6c 61 79 73 20 62 |indow displays b| 000049f0 72 69 65 66 20 69 6e 66 6f 20 61 62 6f 75 74 20 |rief info about | 00004a00 74 68 65 0d 19 3c 1d f4 20 69 63 6f 6e 20 75 6e |the..<.. icon un| 00004a10 64 65 72 20 74 68 65 20 70 6f 69 6e 74 65 72 2e |der the pointer.| 00004a20 0d 19 46 36 f4 20 54 68 65 20 64 75 6d 6d 79 20 |..F6. The dummy | 00004a30 77 69 6e 64 6f 77 20 69 73 20 6e 65 65 64 65 64 |window is needed| 00004a40 20 74 6f 20 70 72 6f 76 69 64 65 20 61 20 27 62 | to provide a 'b| 00004a50 6f 74 74 6f 6d 27 0d 19 50 33 f4 20 77 69 6e 64 |ottom'..P3. wind| 00004a60 6f 77 20 66 6f 72 20 74 68 65 20 77 69 6e 64 6f |ow for the windo| 00004a70 77 20 72 65 2d 6f 72 67 61 6e 69 73 61 74 69 6f |w re-organisatio| 00004a80 6e 20 74 6f 6f 6c 20 74 6f 0d 19 5a 11 f4 20 73 |n tool to..Z.. s| 00004a90 74 61 72 74 20 66 72 6f 6d 2e 0d 19 64 04 0d 19 |tart from...d...| 00004aa0 6e 1f f4 20 43 72 65 61 74 65 20 74 68 65 20 74 |n.. Create the t| 00004ab0 6f 6f 6c 74 69 70 20 77 69 6e 64 6f 77 0d 19 78 |ooltip window..x| 00004ac0 10 54 69 70 24 3d 22 48 65 6c 6c 6f 22 0d 19 82 |.Tip$="Hello"...| 00004ad0 1e 58 53 25 3d 28 a9 28 54 69 70 24 29 2a 31 36 |.XS%=(.(Tip$)*16| 00004ae0 29 2b 32 30 3a 59 53 25 3d 34 30 0d 19 8c 23 c8 |)+20:YS%=40...#.| 00004af0 99 22 57 69 6d 70 5f 47 65 74 50 6f 69 6e 74 65 |."Wimp_GetPointe| 00004b00 72 49 6e 66 6f 22 2c 2c 62 6c 6f 63 6b 25 0d 19 |rInfo",,block%..| 00004b10 96 27 f4 20 44 65 66 69 6e 65 20 73 63 72 65 65 |.'. Define scree| 00004b20 6e 20 70 6f 73 69 74 69 6f 6e 20 6f 66 20 74 6f |n position of to| 00004b30 6f 6c 74 69 70 0d 19 a0 12 58 4f 66 66 73 65 74 |oltip....XOffset| 00004b40 25 3d 58 53 25 2f 32 0d 19 aa 1f e7 20 28 58 4f |%=XS%/2..... (XO| 00004b50 66 66 73 65 74 25 3e 33 32 29 20 58 4f 66 66 73 |ffset%>32) XOffs| 00004b60 65 74 25 3d 33 32 0d 19 b4 19 58 25 3d 28 21 62 |et%=32....X%=(!b| 00004b70 6c 6f 63 6b 25 29 2d 58 4f 66 66 73 65 74 25 0d |lock%)-XOffset%.| 00004b80 19 be 14 59 25 3d 28 62 6c 6f 63 6b 25 21 34 29 |...Y%=(block%!4)| 00004b90 2b 32 34 0d 19 c8 12 f2 47 65 74 53 63 72 65 65 |+24.....GetScree| 00004ba0 6e 53 69 7a 65 0d 19 d2 25 e7 20 28 28 58 25 2b |nSize...%. ((X%+| 00004bb0 58 53 25 29 3e 4f 53 5f 4d 58 25 29 20 58 25 3d |XS%)>OS_MX%) X%=| 00004bc0 4f 53 5f 4d 58 25 2d 58 53 25 0d 19 dc 11 e7 20 |OS_MX%-XS%..... | 00004bd0 28 58 25 3c 30 29 20 58 25 3d 30 0d 19 e6 2e e7 |(X%<0) X%=0.....| 00004be0 20 28 28 59 25 2b 59 53 25 29 3e 4f 53 5f 4d 59 | ((Y%+YS%)>OS_MY| 00004bf0 25 29 20 59 25 3d 28 62 6c 6f 63 6b 25 21 34 29 |%) Y%=(block%!4)| 00004c00 2d 28 59 53 25 2b 32 34 29 0d 19 f0 1a f4 20 49 |-(YS%+24)..... I| 00004c10 46 20 28 28 59 25 2d 59 53 25 29 3c 30 29 20 59 |F ((Y%-YS%)<0) Y| 00004c20 25 3d 30 0d 19 fa 3b 21 62 6c 6f 63 6b 25 3d 58 |%=0...;!block%=X| 00004c30 25 3a 62 6c 6f 63 6b 25 21 34 3d 59 25 3a 62 6c |%:block%!4=Y%:bl| 00004c40 6f 63 6b 25 21 38 3d 58 25 2b 58 53 25 3a 62 6c |ock%!8=X%+XS%:bl| 00004c50 6f 63 6b 25 21 31 32 3d 59 25 2b 59 53 25 0d 1a |ock%!12=Y%+YS%..| 00004c60 04 1a 58 53 25 3d 28 35 31 32 2a 31 36 29 2b 32 |..XS%=(512*16)+2| 00004c70 30 3a 59 53 25 3d 34 30 0d 1a 0e 2c 62 6c 6f 63 |0:YS%=40...,bloc| 00004c80 6b 25 21 31 36 3d 30 3a 62 6c 6f 63 6b 25 21 32 |k%!16=0:block%!2| 00004c90 30 3d 30 3a f4 20 53 63 72 6f 6c 6c 20 6f 66 66 |0=0:. Scroll off| 00004ca0 73 65 74 73 0d 1a 18 3a 62 6c 6f 63 6b 25 21 32 |sets...:block%!2| 00004cb0 34 3d 2d 31 3a 62 6c 6f 63 6b 25 21 32 38 3d 26 |4=-1:block%!28=&| 00004cc0 38 30 30 30 30 30 35 30 3a f4 20 44 65 70 74 68 |80000050:. Depth| 00004cd0 2c 20 77 69 6e 64 6f 77 20 66 6c 61 67 73 0d 1a |, window flags..| 00004ce0 22 33 62 6c 6f 63 6b 25 21 33 32 3d 26 30 30 30 |"3block%!32=&000| 00004cf0 37 30 32 30 37 3a 62 6c 6f 63 6b 25 21 33 36 3d |70207:block%!36=| 00004d00 26 31 32 30 31 30 33 3a f4 20 43 6f 6c 6f 75 72 |&120103:. Colour| 00004d10 73 0d 1a 2c 38 62 6c 6f 63 6b 25 21 34 30 3d 30 |s..,8block%!40=0| 00004d20 3a 62 6c 6f 63 6b 25 21 34 34 3d 2d 59 53 25 3a |:block%!44=-YS%:| 00004d30 62 6c 6f 63 6b 25 21 34 38 3d 58 53 25 3a 62 6c |block%!48=XS%:bl| 00004d40 6f 63 6b 25 21 35 32 3d 30 0d 1a 36 3b 62 6c 6f |ock%!52=0..6;blo| 00004d50 63 6b 25 21 35 36 3d 26 31 39 3a 62 6c 6f 63 6b |ck%!56=&19:block| 00004d60 25 21 36 30 3d 33 3c 3c 31 32 3a f4 20 54 69 74 |%!60=3<<12:. Tit| 00004d70 6c 65 62 61 72 2f 77 6f 72 6b 61 72 65 61 20 66 |lebar/workarea f| 00004d80 6c 61 67 73 0d 1a 40 29 62 6c 6f 63 6b 25 21 36 |lags..@)block%!6| 00004d90 34 3d 30 3a 62 6c 6f 63 6b 25 21 36 38 3d 30 3a |4=0:block%!68=0:| 00004da0 f4 20 53 70 72 69 74 65 20 61 72 65 61 0d 1a 4a |. Sprite area..J| 00004db0 13 24 28 62 6c 6f 63 6b 25 2b 37 32 29 3d bd 30 |.$(block%+72)=.0| 00004dc0 0d 1a 54 0f 62 6c 6f 63 6b 25 21 38 34 3d 31 0d |..T.block%!84=1.| 00004dd0 1a 5e 29 f4 20 44 65 66 69 6e 65 20 31 20 69 63 |.^). Define 1 ic| 00004de0 6f 6e 20 73 74 61 72 74 69 6e 67 20 61 74 20 62 |on starting at b| 00004df0 6c 6f 63 6b 25 21 38 38 0d 1a 68 2c 21 74 6f 6f |lock%!88..h,!too| 00004e00 6c 74 69 70 69 63 6f 6e 25 3d 30 3a f4 20 4e 75 |ltipicon%=0:. Nu| 00004e10 6c 6c 20 76 61 6c 69 64 61 74 69 6f 6e 20 73 74 |ll validation st| 00004e20 72 69 6e 67 0d 1a 72 29 24 28 74 6f 6f 6c 74 69 |ring..r)$(toolti| 00004e30 70 69 63 6f 6e 25 2b 34 29 3d 54 69 70 24 2b bd |picon%+4)=Tip$+.| 00004e40 30 3a f4 20 49 63 6f 6e 20 74 65 78 74 0d 1a 7c |0:. Icon text..|| 00004e50 1e 62 6c 6f 63 6b 25 21 38 38 3d 34 3a f4 20 42 |.block%!88=4:. B| 00004e60 6f 75 6e 64 69 6e 67 20 62 6f 78 0d 1a 86 20 62 |ounding box... b| 00004e70 6c 6f 63 6b 25 21 39 32 3d 2d 34 30 3a f4 20 42 |lock%!92=-40:. B| 00004e80 6f 75 6e 64 69 6e 67 20 62 6f 78 0d 1a 90 3b 62 |ounding box...;b| 00004e90 6c 6f 63 6b 25 21 39 36 3d 28 28 35 31 32 2a 31 |lock%!96=((512*1| 00004ea0 36 29 2b 32 30 29 3a f4 20 42 6f 75 6e 64 69 6e |6)+20):. Boundin| 00004eb0 67 20 62 6f 78 20 6f 66 20 5f 6c 61 72 67 65 73 |g box of _larges| 00004ec0 74 5f 20 74 69 70 0d 1a 9a 1f 62 6c 6f 63 6b 25 |t_ tip....block%| 00004ed0 21 31 30 30 3d 30 3a f4 20 42 6f 75 6e 64 69 6e |!100=0:. Boundin| 00004ee0 67 20 62 6f 78 0d 1a a4 18 62 6c 6f 63 6b 25 21 |g box....block%!| 00004ef0 31 30 34 3d 26 31 37 30 30 33 31 30 31 0d 1a ae |104=&17003101...| 00004f00 1d 62 6c 6f 63 6b 25 21 31 30 38 3d 74 6f 6f 6c |.block%!108=tool| 00004f10 74 69 70 69 63 6f 6e 25 2b 34 0d 1a b8 1b 62 6c |tipicon%+4....bl| 00004f20 6f 63 6b 25 21 31 31 32 3d 74 6f 6f 6c 74 69 70 |ock%!112=tooltip| 00004f30 69 63 6f 6e 25 0d 1a c2 22 62 6c 6f 63 6b 25 21 |icon%..."block%!| 00004f40 31 31 36 3d 35 31 32 3a f4 20 42 75 66 66 65 72 |116=512:. Buffer| 00004f50 20 6c 65 6e 67 74 68 0d 1a cc 34 c8 99 22 57 69 | length...4.."Wi| 00004f60 6d 70 5f 43 72 65 61 74 65 57 69 6e 64 6f 77 22 |mp_CreateWindow"| 00004f70 2c 2c 62 6c 6f 63 6b 25 20 b8 20 77 68 61 6e 64 |,,block% . whand| 00004f80 6c 65 5f 74 6f 6f 6c 74 69 70 25 0d 1a d6 1e 58 |le_tooltip%....X| 00004f90 53 25 3d 28 a9 28 54 69 70 24 29 2a 31 36 29 2b |S%=(.(Tip$)*16)+| 00004fa0 32 30 3a 59 53 25 3d 34 30 0d 1a e0 23 c8 99 22 |20:YS%=40...#.."| 00004fb0 57 69 6d 70 5f 47 65 74 50 6f 69 6e 74 65 72 49 |Wimp_GetPointerI| 00004fc0 6e 66 6f 22 2c 2c 62 6c 6f 63 6b 25 0d 1a ea 27 |nfo",,block%...'| 00004fd0 f4 20 44 65 66 69 6e 65 20 73 63 72 65 65 6e 20 |. Define screen | 00004fe0 70 6f 73 69 74 69 6f 6e 20 6f 66 20 74 6f 6f 6c |position of tool| 00004ff0 74 69 70 0d 1a f4 12 58 4f 66 66 73 65 74 25 3d |tip....XOffset%=| 00005000 58 53 25 2f 32 0d 1a fe 1f e7 20 28 58 4f 66 66 |XS%/2..... (XOff| 00005010 73 65 74 25 3e 33 32 29 20 58 4f 66 66 73 65 74 |set%>32) XOffset| 00005020 25 3d 33 32 0d 1b 08 19 58 25 3d 28 21 62 6c 6f |%=32....X%=(!blo| 00005030 63 6b 25 29 2d 58 4f 66 66 73 65 74 25 0d 1b 12 |ck%)-XOffset%...| 00005040 12 f2 47 65 74 53 63 72 65 65 6e 53 69 7a 65 0d |..GetScreenSize.| 00005050 1b 1c 25 e7 20 28 28 58 25 2b 58 53 25 29 3e 4f |..%. ((X%+XS%)>O| 00005060 53 5f 4d 58 25 29 20 58 25 3d 4f 53 5f 4d 58 25 |S_MX%) X%=OS_MX%| 00005070 2d 58 53 25 0d 1b 26 11 e7 20 28 58 25 3c 30 29 |-XS%..&.. (X%<0)| 00005080 20 58 25 3d 30 0d 1b 30 2e e7 20 28 28 59 25 2b | X%=0..0.. ((Y%+| 00005090 59 53 25 29 3e 4f 53 5f 4d 59 25 29 20 59 25 3d |YS%)>OS_MY%) Y%=| 000050a0 28 62 6c 6f 63 6b 25 21 34 29 2d 28 59 53 25 2b |(block%!4)-(YS%+| 000050b0 32 34 29 0d 1b 3a 0c 59 25 3d 2d 31 30 32 34 0d |24)..:.Y%=-1024.| 000050c0 1b 44 1a f4 20 49 46 20 28 28 59 25 2d 59 53 25 |.D.. IF ((Y%-YS%| 000050d0 29 3c 30 29 20 59 25 3d 30 0d 1b 4e 1e f4 20 47 |)<0) Y%=0..N.. G| 000050e0 65 74 20 54 6f 6f 6c 74 69 70 20 77 69 6e 64 6f |et Tooltip windo| 000050f0 77 20 73 74 61 74 65 0d 1b 58 1c 21 62 6c 6f 63 |w state..X.!bloc| 00005100 6b 25 3d 77 68 61 6e 64 6c 65 5f 74 6f 6f 6c 74 |k%=whandle_toolt| 00005110 69 70 25 0d 1b 62 23 c8 99 22 57 69 6d 70 5f 47 |ip%..b#.."Wimp_G| 00005120 65 74 57 69 6e 64 6f 77 53 74 61 74 65 22 2c 2c |etWindowState",,| 00005130 62 6c 6f 63 6b 25 0d 1b 6c 3f 62 6c 6f 63 6b 25 |block%..l?block%| 00005140 21 34 3d 58 25 3a 62 6c 6f 63 6b 25 21 38 3d 2d |!4=X%:block%!8=-| 00005150 31 30 32 34 3a 62 6c 6f 63 6b 25 21 31 32 3d 58 |1024:block%!12=X| 00005160 25 2b 58 53 25 3a 62 6c 6f 63 6b 25 21 31 36 3d |%+XS%:block%!16=| 00005170 2d 31 30 32 34 0d 1b 76 2c 62 6c 6f 63 6b 25 21 |-1024..v,block%!| 00005180 32 30 3d 30 3a 62 6c 6f 63 6b 25 21 32 34 3d 30 |20=0:block%!24=0| 00005190 3a f4 20 53 63 72 6f 6c 6c 20 6f 66 66 73 65 74 |:. Scroll offset| 000051a0 73 0d 1b 80 12 f4 20 62 6c 6f 63 6b 25 21 32 38 |s..... block%!28| 000051b0 3d 2d 31 0d 1b 8a 1f c8 99 22 57 69 6d 70 5f 4f |=-1......"Wimp_O| 000051c0 70 65 6e 57 69 6e 64 6f 77 22 2c 2c 62 6c 6f 63 |penWindow",,bloc| 000051d0 6b 25 0d 1b 94 0e 54 6f 6f 6c 54 69 70 25 3d 30 |k%....ToolTip%=0| 000051e0 0d 1b 9e 04 0d 1b a8 04 0d 1b b2 04 0d 1b bc 22 |..............."| 000051f0 f4 20 43 72 65 61 74 65 20 74 68 65 20 64 75 6d |. Create the dum| 00005200 6d 79 20 62 61 63 6b 20 77 69 6e 64 6f 77 0d 1b |my back window..| 00005210 c6 27 f4 20 44 65 66 69 6e 65 20 73 63 72 65 65 |.'. Define scree| 00005220 6e 20 70 6f 73 69 74 69 6f 6e 20 6f 66 20 74 6f |n position of to| 00005230 6f 6c 74 69 70 0d 1b d0 1e 58 53 25 3d 28 a9 28 |oltip....XS%=(.(| 00005240 54 69 70 24 29 2a 31 36 29 2b 32 30 3a 59 53 25 |Tip$)*16)+20:YS%| 00005250 3d 34 30 0d 1b da 12 58 4f 66 66 73 65 74 25 3d |=40....XOffset%=| 00005260 58 53 25 2f 32 0d 1b e4 1f e7 20 28 58 4f 66 66 |XS%/2..... (XOff| 00005270 73 65 74 25 3e 33 32 29 20 58 4f 66 66 73 65 74 |set%>32) XOffset| 00005280 25 3d 33 32 0d 1b ee 09 58 25 3d 36 34 0d 1b f8 |%=32....X%=64...| 00005290 0c 59 25 3d 2d 31 30 32 34 0d 1c 02 3b 21 62 6c |.Y%=-1024...;!bl| 000052a0 6f 63 6b 25 3d 58 25 3a 62 6c 6f 63 6b 25 21 34 |ock%=X%:block%!4| 000052b0 3d 59 25 3a 62 6c 6f 63 6b 25 21 38 3d 58 25 2b |=Y%:block%!8=X%+| 000052c0 58 53 25 3a 62 6c 6f 63 6b 25 21 31 32 3d 59 25 |XS%:block%!12=Y%| 000052d0 2b 59 53 25 0d 1c 0c 1a 58 53 25 3d 28 35 31 32 |+YS%....XS%=(512| 000052e0 2a 31 36 29 2b 32 30 3a 59 53 25 3d 34 30 0d 1c |*16)+20:YS%=40..| 000052f0 16 2c 62 6c 6f 63 6b 25 21 31 36 3d 30 3a 62 6c |.,block%!16=0:bl| 00005300 6f 63 6b 25 21 32 30 3d 30 3a f4 20 53 63 72 6f |ock%!20=0:. Scro| 00005310 6c 6c 20 6f 66 66 73 65 74 73 0d 1c 20 3a 62 6c |ll offsets.. :bl| 00005320 6f 63 6b 25 21 32 34 3d 2d 31 3a 62 6c 6f 63 6b |ock%!24=-1:block| 00005330 25 21 32 38 3d 26 38 30 30 30 30 30 35 30 3a f4 |%!28=&80000050:.| 00005340 20 44 65 70 74 68 2c 20 77 69 6e 64 6f 77 20 66 | Depth, window f| 00005350 6c 61 67 73 0d 1c 2a 33 62 6c 6f 63 6b 25 21 33 |lags..*3block%!3| 00005360 32 3d 26 30 30 30 37 30 32 30 37 3a 62 6c 6f 63 |2=&00070207:bloc| 00005370 6b 25 21 33 36 3d 26 31 32 30 31 30 33 3a f4 20 |k%!36=&120103:. | 00005380 43 6f 6c 6f 75 72 73 0d 1c 34 38 62 6c 6f 63 6b |Colours..48block| 00005390 25 21 34 30 3d 30 3a 62 6c 6f 63 6b 25 21 34 34 |%!40=0:block%!44| 000053a0 3d 2d 59 53 25 3a 62 6c 6f 63 6b 25 21 34 38 3d |=-YS%:block%!48=| 000053b0 58 53 25 3a 62 6c 6f 63 6b 25 21 35 32 3d 30 0d |XS%:block%!52=0.| 000053c0 1c 3e 3b 62 6c 6f 63 6b 25 21 35 36 3d 26 31 39 |.>;block%!56=&19| 000053d0 3a 62 6c 6f 63 6b 25 21 36 30 3d 33 3c 3c 31 32 |:block%!60=3<<12| 000053e0 3a f4 20 54 69 74 6c 65 62 61 72 2f 77 6f 72 6b |:. Titlebar/work| 000053f0 61 72 65 61 20 66 6c 61 67 73 0d 1c 48 29 62 6c |area flags..H)bl| 00005400 6f 63 6b 25 21 36 34 3d 30 3a 62 6c 6f 63 6b 25 |ock%!64=0:block%| 00005410 21 36 38 3d 30 3a f4 20 53 70 72 69 74 65 20 61 |!68=0:. Sprite a| 00005420 72 65 61 0d 1c 52 13 24 28 62 6c 6f 63 6b 25 2b |rea..R.$(block%+| 00005430 37 32 29 3d bd 30 0d 1c 5c 0f 62 6c 6f 63 6b 25 |72)=.0..\.block%| 00005440 21 38 34 3d 31 0d 1c 66 29 f4 20 44 65 66 69 6e |!84=1..f). Defin| 00005450 65 20 31 20 69 63 6f 6e 20 73 74 61 72 74 69 6e |e 1 icon startin| 00005460 67 20 61 74 20 62 6c 6f 63 6b 25 21 38 38 0d 1c |g at block%!88..| 00005470 70 2c 21 74 6f 6f 6c 74 69 70 69 63 6f 6e 25 3d |p,!tooltipicon%=| 00005480 30 3a f4 20 4e 75 6c 6c 20 76 61 6c 69 64 61 74 |0:. Null validat| 00005490 69 6f 6e 20 73 74 72 69 6e 67 0d 1c 7a 29 24 28 |ion string..z)$(| 000054a0 74 6f 6f 6c 74 69 70 69 63 6f 6e 25 2b 34 29 3d |tooltipicon%+4)=| 000054b0 54 69 70 24 2b bd 30 3a f4 20 49 63 6f 6e 20 74 |Tip$+.0:. Icon t| 000054c0 65 78 74 0d 1c 84 1e 62 6c 6f 63 6b 25 21 38 38 |ext....block%!88| 000054d0 3d 34 3a f4 20 42 6f 75 6e 64 69 6e 67 20 62 6f |=4:. Bounding bo| 000054e0 78 0d 1c 8e 20 62 6c 6f 63 6b 25 21 39 32 3d 2d |x... block%!92=-| 000054f0 33 32 3a f4 20 42 6f 75 6e 64 69 6e 67 20 62 6f |32:. Bounding bo| 00005500 78 0d 1c 98 3b 62 6c 6f 63 6b 25 21 39 36 3d 28 |x...;block%!96=(| 00005510 28 35 31 32 2a 31 36 29 2b 32 30 29 3a f4 20 42 |(512*16)+20):. B| 00005520 6f 75 6e 64 69 6e 67 20 62 6f 78 20 6f 66 20 5f |ounding box of _| 00005530 6c 61 72 67 65 73 74 5f 20 74 69 70 0d 1c a2 20 |largest_ tip... | 00005540 62 6c 6f 63 6b 25 21 31 30 30 3d 2d 38 3a f4 20 |block%!100=-8:. | 00005550 42 6f 75 6e 64 69 6e 67 20 62 6f 78 0d 1c ac 18 |Bounding box....| 00005560 62 6c 6f 63 6b 25 21 31 30 34 3d 26 31 37 30 30 |block%!104=&1700| 00005570 33 31 30 31 0d 1c b6 1d 62 6c 6f 63 6b 25 21 31 |3101....block%!1| 00005580 30 38 3d 74 6f 6f 6c 74 69 70 69 63 6f 6e 25 2b |08=tooltipicon%+| 00005590 34 0d 1c c0 1b 62 6c 6f 63 6b 25 21 31 31 32 3d |4....block%!112=| 000055a0 74 6f 6f 6c 74 69 70 69 63 6f 6e 25 0d 1c ca 22 |tooltipicon%..."| 000055b0 62 6c 6f 63 6b 25 21 31 31 36 3d 35 31 32 3a f4 |block%!116=512:.| 000055c0 20 42 75 66 66 65 72 20 6c 65 6e 67 74 68 0d 1c | Buffer length..| 000055d0 d4 36 c8 99 22 57 69 6d 70 5f 43 72 65 61 74 65 |.6.."Wimp_Create| 000055e0 57 69 6e 64 6f 77 22 2c 2c 62 6c 6f 63 6b 25 20 |Window",,block% | 000055f0 b8 20 77 68 61 6e 64 6c 65 5f 64 75 6d 6d 79 62 |. whandle_dummyb| 00005600 61 63 6b 25 0d 1c de 1e f4 20 47 65 74 20 54 6f |ack%..... Get To| 00005610 6f 6c 74 69 70 20 77 69 6e 64 6f 77 20 73 74 61 |oltip window sta| 00005620 74 65 0d 1c e8 1e 21 62 6c 6f 63 6b 25 3d 77 68 |te....!block%=wh| 00005630 61 6e 64 6c 65 5f 64 75 6d 6d 79 62 61 63 6b 25 |andle_dummyback%| 00005640 0d 1c f2 23 c8 99 22 57 69 6d 70 5f 47 65 74 57 |...#.."Wimp_GetW| 00005650 69 6e 64 6f 77 53 74 61 74 65 22 2c 2c 62 6c 6f |indowState",,blo| 00005660 63 6b 25 0d 1c fc 10 62 6c 6f 63 6b 25 21 32 38 |ck%....block%!28| 00005670 3d 2d 32 0d 1d 06 1f c8 99 22 57 69 6d 70 5f 4f |=-2......"Wimp_O| 00005680 70 65 6e 57 69 6e 64 6f 77 22 2c 2c 62 6c 6f 63 |penWindow",,bloc| 00005690 6b 25 0d 1d 10 28 61 66 74 65 72 25 3d 77 68 61 |k%...(after%=wha| 000056a0 6e 64 6c 65 5f 64 75 6d 6d 79 62 61 63 6b 25 3a |ndle_dummyback%:| 000056b0 63 61 73 63 61 64 65 25 3d 30 0d 1d 1a 04 0d 1d |cascade%=0......| 000056c0 24 05 e1 0d 1d 2e 04 0d 1d 38 14 dd f2 44 65 73 |$........8...Des| 000056d0 74 72 6f 79 54 6f 6f 6c 54 69 70 0d 1d 42 1c 21 |troyToolTip..B.!| 000056e0 62 6c 6f 63 6b 25 3d 77 68 61 6e 64 6c 65 5f 74 |block%=whandle_t| 000056f0 6f 6f 6c 74 69 70 25 0d 1d 4c 20 c8 99 22 57 69 |ooltip%..L .."Wi| 00005700 6d 70 5f 43 6c 6f 73 65 57 69 6e 64 6f 77 22 2c |mp_CloseWindow",| 00005710 2c 62 6c 6f 63 6b 25 0d 1d 56 21 c8 99 22 57 69 |,block%..V!.."Wi| 00005720 6d 70 5f 44 65 6c 65 74 65 57 69 6e 64 6f 77 22 |mp_DeleteWindow"| 00005730 2c 2c 62 6c 6f 63 6b 25 0d 1d 60 04 0d 1d 6a 1e |,,block%..`...j.| 00005740 21 62 6c 6f 63 6b 25 3d 77 68 61 6e 64 6c 65 5f |!block%=whandle_| 00005750 64 75 6d 6d 79 62 61 63 6b 25 0d 1d 74 20 c8 99 |dummyback%..t ..| 00005760 22 57 69 6d 70 5f 43 6c 6f 73 65 57 69 6e 64 6f |"Wimp_CloseWindo| 00005770 77 22 2c 2c 62 6c 6f 63 6b 25 0d 1d 7e 21 c8 99 |w",,block%..~!..| 00005780 22 57 69 6d 70 5f 44 65 6c 65 74 65 57 69 6e 64 |"Wimp_DeleteWind| 00005790 6f 77 22 2c 2c 62 6c 6f 63 6b 25 0d 1d 88 05 e1 |ow",,block%.....| 000057a0 0d 1d 92 04 0d 1d 9c 17 dd f2 55 70 64 61 74 65 |..........Update| 000057b0 54 6f 6f 6c 54 69 70 54 69 6d 65 0d 1d a6 17 ea |ToolTipTime.....| 000057c0 20 58 4f 66 66 73 65 74 25 2c 20 4f 6c 64 54 69 | XOffset%, OldTi| 000057d0 70 24 0d 1d b0 10 4f 6c 64 54 69 70 24 3d 54 69 |p$....OldTip$=Ti| 000057e0 70 24 0d 1d ba 0c f2 47 65 74 44 61 74 65 0d 1d |p$.....GetDate..| 000057f0 c4 13 54 69 70 24 3d 53 74 61 72 74 44 61 74 65 |..Tip$=StartDate| 00005800 24 0d 1d ce 17 e7 20 28 4f 6c 64 54 69 70 24 3c |$..... (OldTip$<| 00005810 3e 54 69 70 24 29 20 8c 0d 1d d8 33 f4 20 49 46 |>Tip$) ....3. IF| 00005820 20 28 54 69 70 49 44 25 3d 31 29 20 54 69 70 24 | (TipID%=1) Tip$| 00005830 3d 22 61 66 74 65 72 25 20 3d 20 26 22 2b 53 54 |="after% = &"+ST| 00005840 52 24 7e 28 61 66 74 65 72 25 29 0d 1d e2 1e 58 |R$~(after%)....X| 00005850 53 25 3d 28 a9 28 54 69 70 24 29 2a 31 36 29 2b |S%=(.(Tip$)*16)+| 00005860 32 30 3a 59 53 25 3d 34 30 0d 1d ec 24 c8 99 22 |20:YS%=40...$.."| 00005870 57 69 6d 70 5f 47 65 74 50 6f 69 6e 74 65 72 49 |Wimp_GetPointerI| 00005880 6e 66 6f 22 2c 2c 62 6c 6f 63 6b 32 25 0d 1d f6 |nfo",,block2%...| 00005890 21 f4 20 41 64 6a 75 73 74 20 54 6f 6f 6c 74 69 |!. Adjust Toolti| 000058a0 70 20 77 69 6e 64 6f 77 20 73 74 61 74 65 0d 1e |p window state..| 000058b0 00 1d 21 62 6c 6f 63 6b 32 25 3d 77 68 61 6e 64 |..!block2%=whand| 000058c0 6c 65 5f 74 6f 6f 6c 74 69 70 25 0d 1e 0a 24 c8 |le_tooltip%...$.| 000058d0 99 22 57 69 6d 70 5f 47 65 74 57 69 6e 64 6f 77 |."Wimp_GetWindow| 000058e0 53 74 61 74 65 22 2c 2c 62 6c 6f 63 6b 32 25 0d |State",,block2%.| 000058f0 1e 14 10 58 25 3d 62 6c 6f 63 6b 32 25 21 34 0d |...X%=block2%!4.| 00005900 1e 1e 10 59 25 3d 62 6c 6f 63 6b 32 25 21 38 0d |...Y%=block2%!8.| 00005910 1e 28 1d 21 62 6c 6f 63 6b 32 25 3d 77 68 61 6e |.(.!block2%=whan| 00005920 64 6c 65 5f 74 6f 6f 6c 74 69 70 25 0d 1e 32 41 |dle_tooltip%..2A| 00005930 62 6c 6f 63 6b 32 25 21 34 3d 58 25 3a 62 6c 6f |block2%!4=X%:blo| 00005940 63 6b 32 25 21 38 3d 59 25 3a 62 6c 6f 63 6b 32 |ck2%!8=Y%:block2| 00005950 25 21 31 32 3d 58 25 2b 58 53 25 3a 62 6c 6f 63 |%!12=X%+XS%:bloc| 00005960 6b 32 25 21 31 36 3d 59 25 2b 59 53 25 0d 1e 3c |k2%!16=Y%+YS%..<| 00005970 2e 62 6c 6f 63 6b 32 25 21 32 30 3d 30 3a 62 6c |.block2%!20=0:bl| 00005980 6f 63 6b 32 25 21 32 34 3d 30 3a f4 20 53 63 72 |ock2%!24=0:. Scr| 00005990 6f 6c 6c 20 6f 66 66 73 65 74 73 0d 1e 46 11 62 |oll offsets..F.b| 000059a0 6c 6f 63 6b 32 25 21 32 38 3d 2d 31 0d 1e 50 29 |lock2%!28=-1..P)| 000059b0 24 28 74 6f 6f 6c 74 69 70 69 63 6f 6e 25 2b 34 |$(tooltipicon%+4| 000059c0 29 3d 54 69 70 24 2b bd 30 3a f4 20 49 63 6f 6e |)=Tip$+.0:. Icon| 000059d0 20 74 65 78 74 0d 1e 5a 22 f4 53 59 53 22 57 69 | text..Z".SYS"Wi| 000059e0 6d 70 5f 4f 70 65 6e 57 69 6e 64 6f 77 22 2c 2c |mp_OpenWindow",,| 000059f0 62 6c 6f 63 6b 32 25 0d 1e 64 11 f4 20 55 70 64 |block2%..d.. Upd| 00005a00 61 74 65 20 69 63 6f 6e 0d 1e 6e 1d 21 62 6c 6f |ate icon..n.!blo| 00005a10 63 6b 32 25 3d 77 68 61 6e 64 6c 65 5f 74 6f 6f |ck2%=whandle_too| 00005a20 6c 74 69 70 25 0d 1e 78 0f 62 6c 6f 63 6b 32 25 |ltip%..x.block2%| 00005a30 21 34 3d 30 0d 1e 82 22 c8 99 22 57 69 6d 70 5f |!4=0...".."Wimp_| 00005a40 47 65 74 49 63 6f 6e 53 74 61 74 65 22 2c 2c 62 |GetIconState",,b| 00005a50 6c 6f 63 6b 32 25 0d 1e 8c 28 62 6c 6f 63 6b 32 |lock2%...(block2| 00005a60 25 21 38 3d 30 3a f4 20 44 6f 6e 27 74 20 63 68 |%!8=0:. Don't ch| 00005a70 61 6e 67 65 20 61 6e 79 74 68 69 6e 67 2c 0d 1e |ange anything,..| 00005a80 96 2c 62 6c 6f 63 6b 32 25 21 31 32 3d 30 3a f4 |.,block2%!12=0:.| 00005a90 20 4a 75 73 74 20 73 69 67 6e 61 6c 20 61 6e 20 | Just signal an | 00005aa0 75 70 64 61 74 65 20 2e 2e 2e 0d 1e a0 22 c8 99 |update ......"..| 00005ab0 22 57 69 6d 70 5f 53 65 74 49 63 6f 6e 53 74 61 |"Wimp_SetIconSta| 00005ac0 74 65 22 2c 2c 62 6c 6f 63 6b 32 25 0d 1e aa 05 |te",,block2%....| 00005ad0 cd 0d 1e b4 05 e1 0d 1e be 04 0d 1e c8 19 dd f2 |................| 00005ae0 4f 70 65 6e 54 6f 6f 6c 54 69 70 28 54 69 70 49 |OpenToolTip(TipI| 00005af0 44 25 29 0d 1e d2 1a ea 20 58 4f 66 66 73 65 74 |D%)..... XOffset| 00005b00 25 2c 20 52 61 6e 64 54 69 70 49 44 25 0d 1e dc |%, RandTipID%...| 00005b10 19 e7 20 28 54 69 70 49 44 25 3d 54 6f 6f 6c 54 |.. (TipID%=ToolT| 00005b20 69 70 25 29 20 e1 0d 1e e6 20 e7 20 28 54 6f 6f |ip%) .... . (Too| 00005b30 6c 54 69 70 25 3e 30 29 20 f2 43 6c 6f 73 65 54 |lTip%>0) .CloseT| 00005b40 6f 6f 6c 54 69 70 0d 1e f0 1b f4 20 43 72 65 61 |oolTip..... Crea| 00005b50 74 65 20 54 6f 6f 6c 54 69 70 20 57 69 6e 64 6f |te ToolTip Windo| 00005b60 77 0d 1e fa 29 e7 20 28 54 69 70 49 44 25 3d 31 |w...). (TipID%=1| 00005b70 29 20 f2 47 65 74 44 61 74 65 3a 54 69 70 24 3d |) .GetDate:Tip$=| 00005b80 53 74 61 72 74 44 61 74 65 24 0d 1f 04 12 e7 20 |StartDate$..... | 00005b90 28 54 69 70 49 44 25 3d 32 29 20 8c 0d 1f 0e 1e |(TipID%=2) .....| 00005ba0 20 54 69 70 24 3d 22 43 6c 69 63 6b 20 66 6f 72 | Tip$="Click for| 00005bb0 20 6d 6f 72 65 20 2e 2e 2e 22 0d 1f 18 22 20 52 | more ..."..." R| 00005bc0 61 6e 64 54 69 70 49 44 25 3d b3 28 52 61 6e 64 |andTipID%=.(Rand| 00005bd0 54 69 70 4d 61 78 25 2a 32 29 2d 31 0d 1f 22 23 |TipMax%*2)-1.."#| 00005be0 20 e7 20 28 52 61 6e 64 54 69 70 49 44 25 20 3c | . (RandTipID% <| 00005bf0 20 52 61 6e 64 54 69 70 4d 61 78 25 29 20 8c 0d | RandTipMax%) ..| 00005c00 1f 2c 24 20 20 54 69 70 24 3d 54 69 70 24 2b 52 |.,$ Tip$=Tip$+R| 00005c10 61 6e 64 54 69 70 24 28 52 61 6e 64 54 69 70 49 |andTip$(RandTipI| 00005c20 44 25 29 0d 1f 36 06 20 cd 0d 1f 40 05 cd 0d 1f |D%)..6. ...@....| 00005c30 4a 3b e7 20 28 54 69 70 49 44 25 3d 33 29 20 54 |J;. (TipID%=3) T| 00005c40 69 70 24 3d 22 63 75 72 72 65 6e 74 77 69 6e 64 |ip$="currentwind| 00005c50 6f 77 25 20 3d 20 22 2b c3 28 63 75 72 72 65 6e |ow% = "+.(curren| 00005c60 74 77 69 6e 64 6f 77 25 29 0d 1f 54 33 f4 20 49 |twindow%)..T3. I| 00005c70 46 20 28 54 69 70 49 44 25 3d 31 29 20 54 69 70 |F (TipID%=1) Tip| 00005c80 24 3d 22 61 66 74 65 72 25 20 3d 20 26 22 2b 53 |$="after% = &"+S| 00005c90 54 52 24 7e 28 61 66 74 65 72 25 29 0d 1f 5e 1e |TR$~(after%)..^.| 00005ca0 58 53 25 3d 28 a9 28 54 69 70 24 29 2a 31 36 29 |XS%=(.(Tip$)*16)| 00005cb0 2b 32 30 3a 59 53 25 3d 34 30 0d 1f 68 23 c8 99 |+20:YS%=40..h#..| 00005cc0 22 57 69 6d 70 5f 47 65 74 50 6f 69 6e 74 65 72 |"Wimp_GetPointer| 00005cd0 49 6e 66 6f 22 2c 2c 62 6c 6f 63 6b 25 0d 1f 72 |Info",,block%..r| 00005ce0 27 f4 20 44 65 66 69 6e 65 20 73 63 72 65 65 6e |'. Define screen| 00005cf0 20 70 6f 73 69 74 69 6f 6e 20 6f 66 20 74 6f 6f | position of too| 00005d00 6c 74 69 70 0d 1f 7c 12 58 4f 66 66 73 65 74 25 |ltip..|.XOffset%| 00005d10 3d 58 53 25 2f 32 0d 1f 86 1f e7 20 28 58 4f 66 |=XS%/2..... (XOf| 00005d20 66 73 65 74 25 3e 33 32 29 20 58 4f 66 66 73 65 |fset%>32) XOffse| 00005d30 74 25 3d 33 32 0d 1f 90 19 58 25 3d 28 21 62 6c |t%=32....X%=(!bl| 00005d40 6f 63 6b 25 29 2d 58 4f 66 66 73 65 74 25 0d 1f |ock%)-XOffset%..| 00005d50 9a 14 59 25 3d 28 62 6c 6f 63 6b 25 21 34 29 2b |..Y%=(block%!4)+| 00005d60 32 34 0d 1f a4 12 f2 47 65 74 53 63 72 65 65 6e |24.....GetScreen| 00005d70 53 69 7a 65 0d 1f ae 25 e7 20 28 28 58 25 2b 58 |Size...%. ((X%+X| 00005d80 53 25 29 3e 4f 53 5f 4d 58 25 29 20 58 25 3d 4f |S%)>OS_MX%) X%=O| 00005d90 53 5f 4d 58 25 2d 58 53 25 0d 1f b8 11 e7 20 28 |S_MX%-XS%..... (| 00005da0 58 25 3c 30 29 20 58 25 3d 30 0d 1f c2 2e e7 20 |X%<0) X%=0..... | 00005db0 28 28 59 25 2b 59 53 25 29 3e 4f 53 5f 4d 59 25 |((Y%+YS%)>OS_MY%| 00005dc0 29 20 59 25 3d 28 62 6c 6f 63 6b 25 21 34 29 2d |) Y%=(block%!4)-| 00005dd0 28 59 53 25 2b 32 34 29 0d 1f cc 1a f4 20 49 46 |(YS%+24)..... IF| 00005de0 20 28 28 59 25 2d 59 53 25 29 3c 30 29 20 59 25 | ((Y%-YS%)<0) Y%| 00005df0 3d 30 0d 1f d6 04 0d 1f e0 21 f4 20 41 64 6a 75 |=0.......!. Adju| 00005e00 73 74 20 54 6f 6f 6c 74 69 70 20 77 69 6e 64 6f |st Tooltip windo| 00005e10 77 20 73 74 61 74 65 0d 1f ea 1c 21 62 6c 6f 63 |w state....!bloc| 00005e20 6b 25 3d 77 68 61 6e 64 6c 65 5f 74 6f 6f 6c 74 |k%=whandle_toolt| 00005e30 69 70 25 0d 1f f4 23 c8 99 22 57 69 6d 70 5f 47 |ip%...#.."Wimp_G| 00005e40 65 74 57 69 6e 64 6f 77 53 74 61 74 65 22 2c 2c |etWindowState",,| 00005e50 62 6c 6f 63 6b 25 0d 1f fe 1c 21 62 6c 6f 63 6b |block%....!block| 00005e60 25 3d 77 68 61 6e 64 6c 65 5f 74 6f 6f 6c 74 69 |%=whandle_toolti| 00005e70 70 25 0d 20 08 3d 62 6c 6f 63 6b 25 21 34 3d 58 |p%. .=block%!4=X| 00005e80 25 3a 62 6c 6f 63 6b 25 21 38 3d 59 25 3a 62 6c |%:block%!8=Y%:bl| 00005e90 6f 63 6b 25 21 31 32 3d 58 25 2b 58 53 25 3a 62 |ock%!12=X%+XS%:b| 00005ea0 6c 6f 63 6b 25 21 31 36 3d 59 25 2b 59 53 25 0d |lock%!16=Y%+YS%.| 00005eb0 20 12 2c 62 6c 6f 63 6b 25 21 32 30 3d 30 3a 62 | .,block%!20=0:b| 00005ec0 6c 6f 63 6b 25 21 32 34 3d 30 3a f4 20 53 63 72 |lock%!24=0:. Scr| 00005ed0 6f 6c 6c 20 6f 66 66 73 65 74 73 0d 20 1c 10 62 |oll offsets. ..b| 00005ee0 6c 6f 63 6b 25 21 32 38 3d 2d 31 0d 20 26 29 24 |lock%!28=-1. &)$| 00005ef0 28 74 6f 6f 6c 74 69 70 69 63 6f 6e 25 2b 34 29 |(tooltipicon%+4)| 00005f00 3d 54 69 70 24 2b bd 30 3a f4 20 49 63 6f 6e 20 |=Tip$+.0:. Icon | 00005f10 74 65 78 74 0d 20 30 1f c8 99 22 57 69 6d 70 5f |text. 0..."Wimp_| 00005f20 4f 70 65 6e 57 69 6e 64 6f 77 22 2c 2c 62 6c 6f |OpenWindow",,blo| 00005f30 63 6b 25 0d 20 3a 13 54 6f 6f 6c 54 69 70 25 3d |ck%. :.ToolTip%=| 00005f40 54 69 70 49 44 25 0d 20 44 14 74 6f 6f 6c 74 69 |TipID%. D.toolti| 00005f50 70 5f 74 69 6d 65 72 25 3d 91 0d 20 4e 05 e1 0d |p_timer%=.. N...| 00005f60 20 58 04 0d 20 62 12 dd f2 43 6c 6f 73 65 54 6f | X.. b...CloseTo| 00005f70 6f 6c 54 69 70 0d 20 6c 14 e7 20 28 54 6f 6f 6c |olTip. l.. (Tool| 00005f80 54 69 70 25 3d 30 29 20 e1 0d 20 76 1c 21 62 6c |Tip%=0) .. v.!bl| 00005f90 6f 63 6b 25 3d 77 68 61 6e 64 6c 65 5f 74 6f 6f |ock%=whandle_too| 00005fa0 6c 74 69 70 25 0d 20 80 23 c8 99 22 57 69 6d 70 |ltip%. .#.."Wimp| 00005fb0 5f 47 65 74 57 69 6e 64 6f 77 53 74 61 74 65 22 |_GetWindowState"| 00005fc0 2c 2c 62 6c 6f 63 6b 25 0d 20 8a 1c 21 62 6c 6f |,,block%. ..!blo| 00005fd0 63 6b 25 3d 77 68 61 6e 64 6c 65 5f 74 6f 6f 6c |ck%=whandle_tool| 00005fe0 74 69 70 25 0d 20 94 12 62 6c 6f 63 6b 25 21 38 |tip%. ..block%!8| 00005ff0 3d 2d 31 30 32 34 0d 20 9e 13 62 6c 6f 63 6b 25 |=-1024. ..block%| 00006000 21 31 36 3d 2d 31 30 32 34 0d 20 a8 1f c8 99 22 |!16=-1024. ...."| 00006010 57 69 6d 70 5f 4f 70 65 6e 57 69 6e 64 6f 77 22 |Wimp_OpenWindow"| 00006020 2c 2c 62 6c 6f 63 6b 25 0d 20 b2 22 f4 53 59 53 |,,block%. .".SYS| 00006030 22 57 69 6d 70 5f 43 6c 6f 73 65 57 69 6e 64 6f |"Wimp_CloseWindo| 00006040 77 22 2c 2c 62 6c 6f 63 6b 25 0d 20 bc 24 f4 20 |w",,block%. .$. | 00006050 53 59 53 22 57 69 6d 70 5f 44 65 6c 65 74 65 57 |SYS"Wimp_DeleteW| 00006060 69 6e 64 6f 77 22 2c 2c 62 6c 6f 63 6b 25 0d 20 |indow",,block%. | 00006070 c6 0e 54 6f 6f 6c 54 69 70 25 3d 30 0d 20 d0 05 |..ToolTip%=0. ..| 00006080 e1 0d 20 da 04 0d 20 e4 19 dd f2 50 65 72 73 69 |.. ... ....Persi| 00006090 73 74 43 6c 6f 73 65 54 6f 6f 6c 54 69 70 0d 20 |stCloseToolTip. | 000060a0 ee 14 e7 20 28 54 6f 6f 6c 54 69 70 25 3d 30 29 |... (ToolTip%=0)| 000060b0 20 e1 0d 20 f8 18 4f 6c 64 54 6f 6f 6c 54 69 70 | .. ..OldToolTip| 000060c0 25 3d 54 6f 6f 6c 54 69 70 25 0d 21 02 1d f4 21 |%=ToolTip%.!...!| 000060d0 62 6c 6f 63 6b 25 3d 77 68 61 6e 64 6c 65 5f 74 |block%=whandle_t| 000060e0 6f 6f 6c 74 69 70 25 0d 21 0c 22 f4 53 59 53 22 |ooltip%.!.".SYS"| 000060f0 57 69 6d 70 5f 43 6c 6f 73 65 57 69 6e 64 6f 77 |Wimp_CloseWindow| 00006100 22 2c 2c 62 6c 6f 63 6b 25 0d 21 16 1c 21 62 6c |",,block%.!..!bl| 00006110 6f 63 6b 25 3d 77 68 61 6e 64 6c 65 5f 74 6f 6f |ock%=whandle_too| 00006120 6c 74 69 70 25 0d 21 20 23 c8 99 22 57 69 6d 70 |ltip%.! #.."Wimp| 00006130 5f 47 65 74 57 69 6e 64 6f 77 53 74 61 74 65 22 |_GetWindowState"| 00006140 2c 2c 62 6c 6f 63 6b 25 0d 21 2a 1c 21 62 6c 6f |,,block%.!*.!blo| 00006150 63 6b 25 3d 77 68 61 6e 64 6c 65 5f 74 6f 6f 6c |ck%=whandle_tool| 00006160 74 69 70 25 0d 21 34 12 62 6c 6f 63 6b 25 21 38 |tip%.!4.block%!8| 00006170 3d 2d 31 30 32 34 0d 21 3e 13 62 6c 6f 63 6b 25 |=-1024.!>.block%| 00006180 21 31 36 3d 2d 31 30 32 34 0d 21 48 1f c8 99 22 |!16=-1024.!H..."| 00006190 57 69 6d 70 5f 4f 70 65 6e 57 69 6e 64 6f 77 22 |Wimp_OpenWindow"| 000061a0 2c 2c 62 6c 6f 63 6b 25 0d 21 52 24 f4 20 53 59 |,,block%.!R$. SY| 000061b0 53 22 57 69 6d 70 5f 44 65 6c 65 74 65 57 69 6e |S"Wimp_DeleteWin| 000061c0 64 6f 77 22 2c 2c 62 6c 6f 63 6b 25 0d 21 5c 0e |dow",,block%.!\.| 000061d0 54 6f 6f 6c 54 69 70 25 3d 30 0d 21 66 05 e1 0d |ToolTip%=0.!f...| 000061e0 21 70 04 0d 21 7a 39 f4 20 2a 2a 2a 2a 2a 2a 2a |!p..!z9. *******| 000061f0 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 00006210 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d 21 84 04 |************.!..| 00006220 0d 21 8e 16 dd f2 69 6e 69 74 5f 64 72 61 67 28 |.!....init_drag(| 00006230 69 63 6f 6e 25 29 0d 21 98 0f 71 66 5f 74 69 6d |icon%).!..qf_tim| 00006240 65 72 3d 2d 31 0d 21 a2 23 c8 99 22 57 69 6d 70 |er=-1.!.#.."Wimp| 00006250 5f 47 65 74 50 6f 69 6e 74 65 72 49 6e 66 6f 22 |_GetPointerInfo"| 00006260 2c 2c 62 6c 6f 63 6b 25 0d 21 ac 10 6f 78 25 3d |,,block%.!..ox%=| 00006270 62 6c 6f 63 6b 25 21 30 0d 21 b6 10 6f 79 25 3d |block%!0.!..oy%=| 00006280 62 6c 6f 63 6b 25 21 34 0d 21 c0 12 62 6c 6f 63 |block%!4.!..bloc| 00006290 6b 25 21 34 3d 69 63 6f 6e 25 0d 21 ca 14 64 72 |k%!4=icon%.!..dr| 000062a0 61 67 5f 69 63 6f 6e 25 3d 69 63 6f 6e 25 0d 21 |ag_icon%=icon%.!| 000062b0 d4 17 62 6c 6f 63 6b 25 21 34 3d 64 72 61 67 5f |..block%!4=drag_| 000062c0 74 79 70 65 25 0d 21 de 13 62 6c 6f 63 6b 25 21 |type%.!..block%!| 000062d0 38 3d 6f 78 25 2d 33 32 0d 21 e8 14 62 6c 6f 63 |8=ox%-32.!..bloc| 000062e0 6b 25 21 31 32 3d 6f 79 25 2d 33 32 0d 21 f2 14 |k%!12=oy%-32.!..| 000062f0 62 6c 6f 63 6b 25 21 31 36 3d 6f 78 25 2b 33 32 |block%!16=ox%+32| 00006300 0d 21 fc 14 62 6c 6f 63 6b 25 21 32 30 3d 6f 79 |.!..block%!20=oy| 00006310 25 2b 33 32 0d 22 06 17 62 6c 6f 63 6b 25 21 32 |%+32."..block%!2| 00006320 34 3d 26 38 30 30 30 30 30 30 30 0d 22 10 17 62 |4=&80000000."..b| 00006330 6c 6f 63 6b 25 21 32 38 3d 26 38 30 30 30 30 30 |lock%!28=&800000| 00006340 30 30 0d 22 1a 17 62 6c 6f 63 6b 25 21 33 32 3d |00."..block%!32=| 00006350 26 37 46 46 46 46 46 46 46 0d 22 24 17 62 6c 6f |&7FFFFFFF."$.blo| 00006360 63 6b 25 21 33 36 3d 26 37 46 46 46 46 46 46 46 |ck%!36=&7FFFFFFF| 00006370 0d 22 2e 1c c8 99 22 57 69 6d 70 5f 44 72 61 67 |."...."Wimp_Drag| 00006380 42 6f 78 22 2c 2c 62 6c 6f 63 6b 25 0d 22 38 04 |Box",,block%."8.| 00006390 0d 22 42 1e f4 20 53 74 61 72 74 20 61 20 73 70 |."B.. Start a sp| 000063a0 72 69 74 65 20 64 72 61 67 20 2e 2e 2e 2e 0d 22 |rite drag ....."| 000063b0 4c 33 e7 20 28 69 63 6f 6e 25 3d 61 64 64 5f 77 |L3. (icon%=add_w| 000063c0 69 6e 64 6f 77 25 29 20 24 64 72 61 67 73 70 72 |indow%) $dragspr| 000063d0 69 74 65 6e 61 6d 65 25 3d 22 79 65 73 22 2b bd |itename%="yes"+.| 000063e0 30 0d 22 56 37 e7 20 28 69 63 6f 6e 25 3d 73 75 |0."V7. (icon%=su| 000063f0 62 74 72 61 63 74 5f 77 69 6e 64 6f 77 25 29 20 |btract_window%) | 00006400 24 64 72 61 67 73 70 72 69 74 65 6e 61 6d 65 25 |$dragspritename%| 00006410 3d 22 6e 6f 22 2b bd 30 0d 22 60 16 21 62 6f 75 |="no"+.0."`.!bou| 00006420 6e 64 73 70 72 69 74 65 62 6f 78 25 3d 30 0d 22 |ndspritebox%=0."| 00006430 6a 17 62 6f 75 6e 64 73 70 72 69 74 65 62 6f 78 |j.boundspritebox| 00006440 25 21 34 3d 30 0d 22 74 1c 62 6f 75 6e 64 73 70 |%!4=0."t.boundsp| 00006450 72 69 74 65 62 6f 78 25 21 38 3d 6f 78 25 2b 32 |ritebox%!8=ox%+2| 00006460 34 0d 22 7e 1d 62 6f 75 6e 64 73 70 72 69 74 65 |4."~.boundsprite| 00006470 62 6f 78 25 21 31 32 3d 6f 79 25 2b 32 34 0d 22 |box%!12=oy%+24."| 00006480 88 46 c8 99 22 44 72 61 67 41 53 70 72 69 74 65 |.F.."DragASprite| 00006490 5f 53 74 61 72 74 22 2c 32 2b 38 2b 36 34 2b 31 |_Start",2+8+64+1| 000064a0 32 38 2c 31 2c 64 72 61 67 73 70 72 69 74 65 6e |28,1,dragspriten| 000064b0 61 6d 65 25 2c 62 6f 75 6e 64 73 70 72 69 74 65 |ame%,boundsprite| 000064c0 62 6f 78 25 0d 22 92 05 e1 0d 22 9c 04 0d 22 a6 |box%."...."...".| 000064d0 0e dd f2 64 72 61 67 64 72 6f 70 0d 22 b0 23 c8 |...dragdrop.".#.| 000064e0 99 22 57 69 6d 70 5f 47 65 74 50 6f 69 6e 74 65 |."Wimp_GetPointe| 000064f0 72 49 6e 66 6f 22 2c 2c 62 6c 6f 63 6b 25 0d 22 |rInfo",,block%."| 00006500 ba 17 62 6c 6f 63 6b 25 21 32 30 3d 62 6c 6f 63 |..block%!20=bloc| 00006510 6b 25 21 31 32 0d 22 c4 17 62 6c 6f 63 6b 25 21 |k%!12."..block%!| 00006520 32 34 3d 62 6c 6f 63 6b 25 21 31 36 0d 22 ce 15 |24=block%!16."..| 00006530 62 6c 6f 63 6b 25 21 32 38 3d 21 62 6c 6f 63 6b |block%!28=!block| 00006540 25 0d 22 d8 16 62 6c 6f 63 6b 25 21 33 32 3d 62 |%."..block%!32=b| 00006550 6c 6f 63 6b 25 21 34 0d 22 e2 0f 62 6c 6f 63 6b |lock%!4."..block| 00006560 25 21 33 36 3d 30 0d 22 ec 1a 21 62 6c 6f 63 6b |%!36=0."..!block| 00006570 25 3d 36 34 3a 62 6c 6f 63 6b 25 21 31 32 3d 30 |%=64:block%!12=0| 00006580 0d 22 f6 1e 62 6c 6f 63 6b 25 21 31 36 3d 31 3a |."..block%!16=1:| 00006590 62 6c 6f 63 6b 25 21 34 30 3d 26 66 66 66 0d 23 |block%!40=&fff.#| 000065a0 00 14 24 28 62 6c 6f 63 6b 25 2b 34 34 29 20 3d |..$(block%+44) =| 000065b0 22 22 0d 23 0a 36 c8 99 22 57 69 6d 70 5f 53 65 |"".#.6.."Wimp_Se| 000065c0 6e 64 4d 65 73 73 61 67 65 22 2c 31 38 2c 62 6c |ndMessage",18,bl| 000065d0 6f 63 6b 25 2c 62 6c 6f 63 6b 25 21 32 30 2c 62 |ock%,block%!20,b| 000065e0 6c 6f 63 6b 25 21 32 34 0d 23 14 04 0d 23 1e 22 |lock%!24.#...#."| 000065f0 f4 20 43 61 6e 63 65 6c 20 61 20 73 70 72 69 74 |. Cancel a sprit| 00006600 65 20 64 72 61 67 20 2e 2e 2e 2e 2e 2e 2e 0d 23 |e drag ........#| 00006610 28 18 c8 99 22 44 72 61 67 41 53 70 72 69 74 65 |(..."DragASprite| 00006620 5f 53 74 6f 70 22 0d 23 32 05 e1 0d 23 3c 04 0d |_Stop".#2...#<..| 00006630 23 46 39 f4 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |#F9. ***********| 00006640 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 00006660 2a 2a 2a 2a 2a 2a 2a 2a 0d 23 50 04 0d 23 5a 12 |********.#P..#Z.| 00006670 dd a4 73 74 72 69 6e 67 28 70 74 72 25 29 0d 23 |..string(ptr%).#| 00006680 64 08 ea 20 61 24 0d 23 6e 1b c8 95 20 3f 70 74 |d.. a$.#n... ?pt| 00006690 72 25 3c 3e 30 20 80 20 a9 28 61 24 29 3c 32 35 |r%<>0 . .(a$)<25| 000066a0 34 0d 23 78 18 61 24 2b 3d bd 28 3f 70 74 72 25 |4.#x.a$+=.(?ptr%| 000066b0 29 3a 70 74 72 25 2b 3d 31 0d 23 82 05 ce 0d 23 |):ptr%+=1.#....#| 000066c0 8c 07 3d 61 24 0d 23 96 04 0d 23 a0 1b dd a4 67 |..=a$.#...#....g| 000066d0 65 74 5f 6c 69 6e 65 28 66 69 6c 65 68 61 6e 64 |et_line(filehand| 000066e0 6c 65 25 29 0d 23 aa 0b ea 20 61 24 2c 7a 25 0d |le%).#... a$,z%.| 000066f0 23 b4 08 7a 25 3d 30 0d 23 be 09 61 24 3d 22 22 |#..z%=0.#..a$=""| 00006700 0d 23 c8 05 f5 0d 23 d2 2b e7 20 28 ac 28 c5 23 |.#....#.+. (.(.#| 00006710 66 69 6c 65 68 61 6e 64 6c 65 25 29 29 20 8c 20 |filehandle%)) . | 00006720 7a 25 3d 9a 23 66 69 6c 65 68 61 6e 64 6c 65 25 |z%=.#filehandle%| 00006730 0d 23 dc 16 e7 20 7a 25 3e 3d 33 32 20 61 24 2b |.#... z%>=32 a$+| 00006740 3d bd 28 7a 25 29 0d 23 e6 1b fd 20 7a 25 3c 33 |=.(z%).#... z%<3| 00006750 32 20 84 20 c5 23 66 69 6c 65 68 61 6e 64 6c 65 |2 . .#filehandle| 00006760 25 0d 23 f0 0a 3d 61 24 2b bd 30 0d 23 fa 04 0d |%.#..=a$+.0.#...| 00006770 24 04 1f dd f2 70 75 74 5f 6c 69 6e 65 28 66 69 |$....put_line(fi| 00006780 6c 65 68 61 6e 64 6c 65 25 2c 20 41 24 29 0d 24 |lehandle%, A$).$| 00006790 0e 0b ea 20 61 24 2c 7a 25 0d 24 18 08 7a 25 3d |... a$,z%.$..z%=| 000067a0 31 0d 24 22 10 e3 7a 25 3d 31 b8 20 a9 28 41 24 |1.$"..z%=1. .(A$| 000067b0 29 0d 24 2c 10 61 24 3d c1 41 24 2c 7a 25 2c 31 |).$,.a$=.A$,z%,1| 000067c0 29 0d 24 36 26 e7 20 28 97 28 61 24 29 3e 30 29 |).$6&. (.(a$)>0)| 000067d0 20 8c 20 d5 23 66 69 6c 65 68 61 6e 64 6c 65 25 | . .#filehandle%| 000067e0 2c 20 97 28 61 24 29 0d 24 40 05 ed 0d 24 4a 15 |, .(a$).$@...$J.| 000067f0 d5 23 66 69 6c 65 68 61 6e 64 6c 65 25 2c 20 31 |.#filehandle%, 1| 00006800 30 0d 24 54 05 e1 0d 24 5e 04 0d 24 68 39 f4 20 |0.$T...$^..$h9. | 00006810 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 00006840 2a 2a 2a 0d 24 72 04 0d 24 7c 0f dd f2 6c 6f 61 |***.$r..$|...loa| 00006850 64 63 61 63 68 65 0d 24 86 10 63 61 63 68 65 5f |dcache.$..cache_| 00006860 65 78 74 25 3d 30 0d 24 90 0d 21 63 61 63 68 65 |ext%=0.$..!cache| 00006870 25 3d 30 0d 24 9a 2c f4 20 4c 6f 61 64 20 69 6e |%=0.$.,. Load in| 00006880 20 63 6f 6d 6d 61 6e 64 73 20 74 6f 20 6f 70 65 | commands to ope| 00006890 6e 20 66 69 6c 65 72 20 64 69 73 70 6c 61 79 0d |n filer display.| 000068a0 24 a4 31 46 25 3d 8e 28 53 74 61 72 74 50 61 74 |$.1F%=.(StartPat| 000068b0 68 24 2b 22 2e 55 73 65 72 73 2e 22 2b 55 73 65 |h$+".Users."+Use| 000068c0 72 24 2b 22 2e 7e 7e 6f 70 65 6e 22 2b bd 30 29 |r$+".~~open"+.0)| 000068d0 0d 24 ae 05 f5 0d 24 b8 14 41 24 3d a4 67 65 74 |.$....$..A$=.get| 000068e0 5f 6c 69 6e 65 28 46 25 29 0d 24 c2 2c e7 20 41 |_line(F%).$.,. A| 000068f0 24 3c 3e 22 22 20 8c 20 f2 61 64 64 5f 74 6f 5f |$<>"" . .add_to_| 00006900 63 61 63 68 65 28 41 24 2c 20 6f 70 65 6e 5f 74 |cache(A$, open_t| 00006910 79 70 65 25 29 0d 24 cc 0a fd 20 c5 23 46 25 0d |ype%).$... .#F%.| 00006920 24 d6 08 d9 23 46 25 0d 24 e0 2d f4 20 4c 6f 61 |$...#F%.$.-. Loa| 00006930 64 20 69 6e 20 63 6f 6d 6d 61 6e 64 73 20 74 6f |d in commands to| 00006940 20 63 6c 6f 73 65 20 66 69 6c 65 72 20 64 69 73 | close filer dis| 00006950 70 6c 61 79 0d 24 ea 32 46 25 3d 8e 28 53 74 61 |play.$.2F%=.(Sta| 00006960 72 74 50 61 74 68 24 2b 22 2e 55 73 65 72 73 2e |rtPath$+".Users.| 00006970 22 2b 55 73 65 72 24 2b 22 2e 7e 7e 63 6c 6f 73 |"+User$+".~~clos| 00006980 65 22 2b bd 30 29 0d 24 f4 05 f5 0d 24 fe 14 41 |e"+.0).$....$..A| 00006990 24 3d a4 67 65 74 5f 6c 69 6e 65 28 46 25 29 0d |$=.get_line(F%).| 000069a0 25 08 2d e7 20 41 24 3c 3e 22 22 20 8c 20 f2 61 |%.-. A$<>"" . .a| 000069b0 64 64 5f 74 6f 5f 63 61 63 68 65 28 41 24 2c 20 |dd_to_cache(A$, | 000069c0 63 6c 6f 73 65 5f 74 79 70 65 25 29 0d 25 12 0a |close_type%).%..| 000069d0 fd 20 c5 23 46 25 0d 25 1c 08 d9 23 46 25 0d 25 |. .#F%.%...#F%.%| 000069e0 26 05 e1 0d 25 30 04 0d 25 3a 1f dd f2 61 64 64 |&...%0..%:...add| 000069f0 5f 74 6f 5f 63 61 63 68 65 28 63 6f 6d 24 2c 20 |_to_cache(com$, | 00006a00 74 79 70 65 25 29 0d 25 44 1c 72 65 63 6f 72 64 |type%).%D.record| 00006a10 5f 73 69 7a 65 25 3d a9 28 63 6f 6d 24 29 2b 31 |_size%=.(com$)+1| 00006a20 2b 32 0d 25 4e 84 e7 20 28 72 65 63 6f 72 64 5f |+2.%N.. (record_| 00006a30 73 69 7a 65 25 3e 32 35 35 29 20 8c 20 f2 65 72 |size%>255) . .er| 00006a40 72 6f 72 28 22 50 61 74 68 20 74 6f 6f 20 62 69 |ror("Path too bi| 00006a50 67 21 20 50 6c 65 61 73 65 20 73 68 72 69 6e 6b |g! Please shrink| 00006a60 20 21 53 74 61 72 74 20 61 6e 64 20 72 65 6f 72 | !Start and reor| 00006a70 67 61 6e 69 73 65 20 79 6f 75 72 20 28 6c 65 6e |ganise your (len| 00006a80 67 74 68 79 20 6c 61 62 65 6c 65 64 29 20 64 69 |gthy labeled) di| 00006a90 72 65 63 74 6f 72 79 20 73 74 72 75 63 74 75 72 |rectory structur| 00006aa0 65 2e 22 29 20 20 0d 25 58 25 3f 28 63 61 63 68 |e.") .%X%?(cach| 00006ab0 65 25 2b 63 61 63 68 65 5f 65 78 74 25 29 3d 72 |e%+cache_ext%)=r| 00006ac0 65 63 6f 72 64 5f 73 69 7a 65 25 0d 25 62 20 3f |ecord_size%.%b ?| 00006ad0 28 63 61 63 68 65 25 2b 63 61 63 68 65 5f 65 78 |(cache%+cache_ex| 00006ae0 74 25 2b 31 29 3d 74 79 70 65 25 0d 25 6c 13 e3 |t%+1)=type%.%l..| 00006af0 58 25 3d 31 20 b8 20 a9 28 63 6f 6d 24 29 0d 25 |X%=1 . .(com$).%| 00006b00 76 2c 3f 28 63 61 63 68 65 25 2b 63 61 63 68 65 |v,?(cache%+cache| 00006b10 5f 65 78 74 25 2b 31 2b 58 25 29 3d 97 28 c1 63 |_ext%+1+X%)=.(.c| 00006b20 6f 6d 24 2c 58 25 2c 31 29 29 0d 25 80 05 ed 0d |om$,X%,1)).%....| 00006b30 25 8a 40 3f 28 63 61 63 68 65 25 2b 63 61 63 68 |%.@?(cache%+cach| 00006b40 65 5f 65 78 74 25 2b 31 2b 58 25 29 3d 30 3a f4 |e_ext%+1+X%)=0:.| 00006b50 20 41 64 64 20 74 65 72 6d 69 6e 61 74 69 6e 67 | Add terminating| 00006b60 20 7a 65 72 6f 20 74 6f 20 73 74 72 69 6e 67 0d | zero to string.| 00006b70 25 94 1c 63 61 63 68 65 5f 65 78 74 25 2b 3d 72 |%..cache_ext%+=r| 00006b80 65 63 6f 72 64 5f 73 69 7a 65 25 0d 25 9e 6a e7 |ecord_size%.%.j.| 00006b90 20 28 63 61 63 68 65 5f 65 78 74 25 3e 43 41 43 | (cache_ext%>CAC| 00006ba0 48 45 5f 53 49 5a 45 25 29 20 8c 20 f2 65 72 72 |HE_SIZE%) . .err| 00006bb0 6f 72 28 22 54 6f 6f 20 6d 61 6e 79 20 77 69 6e |or("Too many win| 00006bc0 64 6f 77 73 21 20 50 6c 65 61 73 65 20 69 6e 63 |dows! Please inc| 00006bd0 72 65 61 73 65 20 43 41 43 48 45 5f 53 49 5a 45 |rease CACHE_SIZE| 00006be0 25 20 61 6e 64 20 72 65 72 75 6e 20 21 53 74 61 |% and rerun !Sta| 00006bf0 72 74 2e 22 29 0d 25 a8 40 3f 28 63 61 63 68 65 |rt.").%.@?(cache| 00006c00 25 2b 63 61 63 68 65 5f 65 78 74 25 29 3d 30 3a |%+cache_ext%)=0:| 00006c10 f4 20 49 6e 69 74 69 61 6c 69 73 65 20 6e 65 78 |. Initialise nex| 00006c20 74 20 72 65 63 6f 72 64 20 73 69 7a 65 20 74 6f |t record size to| 00006c30 20 4e 55 4c 4c 0d 25 b2 05 e1 0d 25 bc 04 0d 25 | NULL.%....%...%| 00006c40 c6 39 f4 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |.9. ************| 00006c50 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 00006c70 2a 2a 2a 2a 2a 2a 2a 0d 25 d0 04 0d 25 da 10 dd |*******.%...%...| 00006c80 f2 63 61 63 68 65 5f 6f 70 65 6e 0d 25 e4 10 63 |.cache_open.%..c| 00006c90 61 63 68 65 5f 70 74 72 25 3d 30 0d 25 ee 05 f5 |ache_ptr%=0.%...| 00006ca0 0d 25 f8 20 72 5f 73 69 7a 65 25 3d 3f 28 63 61 |.%. r_size%=?(ca| 00006cb0 63 68 65 25 2b 63 61 63 68 65 5f 70 74 72 25 29 |che%+cache_ptr%)| 00006cc0 0d 26 02 20 74 79 70 65 25 3d 3f 28 63 61 63 68 |.&. type%=?(cach| 00006cd0 65 25 2b 63 61 63 68 65 5f 70 74 72 25 2b 31 29 |e%+cache_ptr%+1)| 00006ce0 0d 26 0c 4b e7 20 28 72 5f 73 69 7a 65 25 3e 30 |.&.K. (r_size%>0| 00006cf0 20 80 20 74 79 70 65 25 3d 6f 70 65 6e 5f 74 79 | . type%=open_ty| 00006d00 70 65 25 29 20 8c 20 f2 65 78 65 63 75 74 65 5f |pe%) . .execute_| 00006d10 73 74 72 69 6e 67 28 63 61 63 68 65 25 2b 63 61 |string(cache%+ca| 00006d20 63 68 65 5f 70 74 72 25 2b 32 29 0d 26 16 17 63 |che_ptr%+2).&..c| 00006d30 61 63 68 65 5f 70 74 72 25 2b 3d 72 5f 73 69 7a |ache_ptr%+=r_siz| 00006d40 65 25 0d 26 20 0e fd 72 5f 73 69 7a 65 25 3d 30 |e%.& ..r_size%=0| 00006d50 0d 26 2a 04 0d 26 34 0f f2 4f 70 65 6e 46 53 56 |.&*..&4..OpenFSV| 00006d60 69 65 77 0d 26 3e 05 e1 0d 26 48 04 0d 26 52 11 |iew.&>...&H..&R.| 00006d70 dd f2 63 61 63 68 65 5f 63 6c 6f 73 65 0d 26 5c |..cache_close.&\| 00006d80 10 63 61 63 68 65 5f 70 74 72 25 3d 30 0d 26 66 |.cache_ptr%=0.&f| 00006d90 05 f5 0d 26 70 20 72 5f 73 69 7a 65 25 3d 3f 28 |...&p r_size%=?(| 00006da0 63 61 63 68 65 25 2b 63 61 63 68 65 5f 70 74 72 |cache%+cache_ptr| 00006db0 25 29 0d 26 7a 20 74 79 70 65 25 3d 3f 28 63 61 |%).&z type%=?(ca| 00006dc0 63 68 65 25 2b 63 61 63 68 65 5f 70 74 72 25 2b |che%+cache_ptr%+| 00006dd0 31 29 0d 26 84 4c e7 20 28 72 5f 73 69 7a 65 25 |1).&.L. (r_size%| 00006de0 3e 30 20 80 20 74 79 70 65 25 3d 63 6c 6f 73 65 |>0 . type%=close| 00006df0 5f 74 79 70 65 25 29 20 8c 20 f2 65 78 65 63 75 |_type%) . .execu| 00006e00 74 65 5f 73 74 72 69 6e 67 28 63 61 63 68 65 25 |te_string(cache%| 00006e10 2b 63 61 63 68 65 5f 70 74 72 25 2b 32 29 0d 26 |+cache_ptr%+2).&| 00006e20 8e 17 63 61 63 68 65 5f 70 74 72 25 2b 3d 72 5f |..cache_ptr%+=r_| 00006e30 73 69 7a 65 25 0d 26 98 0e fd 72 5f 73 69 7a 65 |size%.&...r_size| 00006e40 25 3d 30 0d 26 a2 04 0d 26 ac 10 f2 43 6c 6f 73 |%=0.&...&...Clos| 00006e50 65 46 53 56 69 65 77 0d 26 b6 05 e1 0d 26 c0 04 |eFSView.&....&..| 00006e60 0d 26 ca 1e dd f2 65 78 65 63 75 74 65 5f 73 74 |.&....execute_st| 00006e70 72 69 6e 67 28 73 74 72 5f 70 74 72 25 29 0d 26 |ring(str_ptr%).&| 00006e80 d4 18 41 24 3d a4 73 74 72 69 6e 67 28 73 74 72 |..A$=.string(str| 00006e90 5f 70 74 72 25 29 0d 26 de 14 e7 20 41 24 3c 3e |_ptr%).&... A$<>| 00006ea0 22 22 20 8c 20 ff 28 41 24 29 0d 26 e8 05 e1 0d |"" . .(A$).&....| 00006eb0 26 f2 04 0d 26 fc 39 f4 20 2a 2a 2a 2a 2a 2a 2a |&...&.9. *******| 00006ec0 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 00006ee0 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d 27 06 04 |************.'..| 00006ef0 0d 27 10 11 dd f2 72 65 6f 70 65 6e 66 69 6c 65 |.'....reopenfile| 00006f00 72 0d 27 1a 10 f2 63 61 63 68 65 5f 63 6c 6f 73 |r.'...cache_clos| 00006f10 65 0d 27 24 0f f2 63 61 63 68 65 5f 6f 70 65 6e |e.'$..cache_open| 00006f20 0d 27 2e 05 e1 0d 27 38 04 0d 27 42 10 dd f2 63 |.'....'8..'B...c| 00006f30 6c 6f 73 65 66 69 6c 65 72 0d 27 4c 10 f2 63 61 |losefiler.'L..ca| 00006f40 63 68 65 5f 63 6c 6f 73 65 0d 27 56 05 e1 0d 27 |che_close.'V...'| 00006f50 60 04 0d 27 6a 39 f4 20 2a 2a 2a 2a 2a 2a 2a 2a |`..'j9. ********| 00006f60 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 00006f80 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d 27 74 04 0d |***********.'t..| 00006f90 27 7e 11 dd f2 73 61 76 65 64 65 73 6b 74 6f 70 |'~...savedesktop| 00006fa0 0d 27 88 23 44 58 25 3d ae 28 53 74 61 72 74 50 |.'.#DX%=.(StartP| 00006fb0 61 74 68 24 2b 22 2e 74 6d 70 66 69 6c 65 22 2b |ath$+".tmpfile"+| 00006fc0 bd 30 29 0d 27 92 10 64 62 6c 6f 63 6b 25 21 30 |.0).'..dblock%!0| 00006fd0 3d 32 38 0d 27 9c 1a 64 62 6c 6f 63 6b 25 21 34 |=28.'..dblock%!4| 00006fe0 3d 74 61 73 6b 5f 68 61 6e 64 6c 65 25 0d 27 a6 |=task_handle%.'.| 00006ff0 10 64 62 6c 6f 63 6b 25 21 31 32 3d 30 0d 27 b0 |.dblock%!12=0.'.| 00007000 11 64 62 6c 6f 63 6b 25 21 31 36 3d 31 30 0d 27 |.dblock%!16=10.'| 00007010 ba 12 64 62 6c 6f 63 6b 25 21 32 30 3d 44 58 25 |..dblock%!20=DX%| 00007020 0d 27 c4 10 64 62 6c 6f 63 6b 25 21 32 34 3d 30 |.'..dblock%!24=0| 00007030 0d 27 ce 25 c8 99 22 57 69 6d 70 5f 53 65 6e 64 |.'.%.."Wimp_Send| 00007040 4d 65 73 73 61 67 65 22 2c 31 37 2c 64 62 6c 6f |Message",17,dblo| 00007050 63 6b 25 2c 30 0d 27 d8 05 e1 0d 27 e2 04 0d 27 |ck%,0.'....'...'| 00007060 ec 36 f4 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |.6. ************| 00007070 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 00007090 2a 2a 2a 2a 0d 27 f6 27 f4 20 47 65 74 20 6c 65 |****.'.'. Get le| 000070a0 61 66 20 6e 61 6d 65 20 6f 66 20 61 20 66 75 6c |af name of a ful| 000070b0 6c 20 70 61 74 68 20 6e 61 6d 65 0d 28 00 36 f4 |l path name.(.6.| 000070c0 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a | ***************| 000070d0 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 000070f0 2a 0d 28 0a 17 dd a4 47 65 74 4c 65 61 66 4e 61 |*.(....GetLeafNa| 00007100 6d 65 28 70 74 72 25 29 0d 28 14 17 ea 20 61 24 |me(ptr%).(... a$| 00007110 2c 6c 65 61 66 70 74 72 25 2c 73 69 7a 65 25 0d |,leafptr%,size%.| 00007120 28 1e 1f f4 20 44 65 74 65 72 6d 69 6e 65 20 73 |(... Determine s| 00007130 69 7a 65 20 6f 66 20 7a 73 74 72 69 6e 67 0d 28 |ize of zstring.(| 00007140 28 0b 73 69 7a 65 25 3d 30 0d 28 32 17 c8 95 20 |(.size%=0.(2... | 00007150 3f 28 70 74 72 25 2b 73 69 7a 65 25 29 3e 33 31 |?(ptr%+size%)>31| 00007160 0d 28 3c 0c 73 69 7a 65 25 2b 3d 31 0d 28 46 05 |.(<.size%+=1.(F.| 00007170 ce 0d 28 50 22 f4 20 44 65 74 65 72 6d 69 6e 65 |..(P". Determine| 00007180 20 6f 66 66 73 65 74 20 6f 66 20 6c 65 61 66 6e | offset of leafn| 00007190 61 6d 65 0d 28 5a 12 6c 65 61 66 70 74 72 25 3d |ame.(Z.leafptr%=| 000071a0 73 69 7a 65 25 0d 28 64 2e c8 95 20 28 3f 28 70 |size%.(d... (?(p| 000071b0 74 72 25 2b 6c 65 61 66 70 74 72 25 29 3c 3e 97 |tr%+leafptr%)<>.| 000071c0 28 22 2e 22 29 29 20 80 20 6c 65 61 66 70 74 72 |(".")) . leafptr| 000071d0 25 3e 30 0d 28 6e 0f 6c 65 61 66 70 74 72 25 2d |%>0.(n.leafptr%-| 000071e0 3d 31 0d 28 78 05 ce 0d 28 82 0f 6c 65 61 66 70 |=1.(x...(..leafp| 000071f0 74 72 25 2b 3d 31 0d 28 8c 14 f4 20 42 75 69 6c |tr%+=1.(... Buil| 00007200 64 20 6c 65 61 66 6e 61 6d 65 0d 28 96 09 61 24 |d leafname.(..a$| 00007210 3d 22 22 0d 28 a0 15 c8 95 20 6c 65 61 66 70 74 |="".(.... leafpt| 00007220 72 25 3c 73 69 7a 65 25 0d 28 aa 1b 61 24 2b 3d |r%<size%.(..a$+=| 00007230 bd 28 3f 28 70 74 72 25 2b 6c 65 61 66 70 74 72 |.(?(ptr%+leafptr| 00007240 25 29 29 0d 28 b4 0f 6c 65 61 66 70 74 72 25 2b |%)).(..leafptr%+| 00007250 3d 31 0d 28 be 05 ce 0d 28 c8 07 3d 61 24 0d 28 |=1.(....(..=a$.(| 00007260 d2 04 0d 28 dc 36 f4 20 2a 2a 2a 2a 2a 2a 2a 2a |...(.6. ********| 00007270 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 00007290 2a 2a 2a 2a 2a 2a 2a 2a 0d 28 e6 2d f4 20 66 75 |********.(.-. fu| 000072a0 6e 63 74 69 6f 6e 20 74 6f 20 64 65 61 6c 20 77 |nction to deal w| 000072b0 69 74 68 20 69 6e 63 6f 6d 69 6e 67 20 6d 65 73 |ith incoming mes| 000072c0 73 61 67 65 73 0d 28 f0 36 f4 20 2a 2a 2a 2a 2a |sages.(.6. *****| 000072d0 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 000072f0 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d 28 fa 16 dd |***********.(...| 00007300 f2 72 65 63 65 69 76 65 28 72 65 61 73 6f 6e 25 |.receive(reason%| 00007310 29 0d 29 04 16 6d 65 73 73 61 67 65 25 3d 62 6c |).)..message%=bl| 00007320 6f 63 6b 25 21 31 36 0d 29 0e 34 f4 20 50 52 4f |ock%!16.).4. PRO| 00007330 43 65 72 72 6f 72 28 22 4d 65 73 73 61 67 65 20 |Cerror("Message | 00007340 3a 20 26 22 2b 53 54 52 24 7e 28 6d 65 73 73 61 |: &"+STR$~(messa| 00007350 67 65 25 29 2b 43 48 52 24 30 29 0d 29 18 11 c8 |ge%)+CHR$0).)...| 00007360 8e 20 6d 65 73 73 61 67 65 25 20 ca 0d 29 22 0f |. message% ..)".| 00007370 c9 20 30 3a 71 75 69 74 25 3d b9 0d 29 2c 92 c9 |. 0:quit%=..),..| 00007380 20 33 3a f2 64 61 74 61 5f 6c 6f 61 64 5f 61 64 | 3:.data_load_ad| 00007390 64 5f 6c 69 6e 6b 3a f4 20 50 52 4f 43 65 72 72 |d_link:. PROCerr| 000073a0 6f 72 28 22 44 61 74 61 4c 6f 61 64 3a 22 2b 46 |or("DataLoad:"+F| 000073b0 4e 73 74 72 69 6e 67 28 62 6c 6f 63 6b 25 2b 34 |Nstring(block%+4| 000073c0 34 29 2b 22 20 4c 65 61 66 6e 61 6d 65 3a 22 2b |4)+" Leafname:"+| 000073d0 46 4e 47 65 74 4c 65 61 66 4e 61 6d 65 28 62 6c |FNGetLeafName(bl| 000073e0 6f 63 6b 25 2b 34 34 29 2b 22 20 54 79 70 65 3a |ock%+44)+" Type:| 000073f0 26 22 2b 53 54 52 24 7e 28 21 28 62 6c 6f 63 6b |&"+STR$~(!(block| 00007400 25 2b 34 30 29 29 2b 43 48 52 24 30 29 0d 29 36 |%+40))+CHR$0).)6| 00007410 11 c9 20 32 3a f2 64 61 74 61 5f 61 63 6b 0d 29 |.. 2:.data_ack.)| 00007420 40 12 c9 20 35 3a f2 64 61 74 61 5f 6f 70 65 6e |@.. 5:.data_open| 00007430 0d 29 4a 15 c9 20 31 30 3a f2 64 65 73 6b 74 6f |.)J.. 10:.deskto| 00007440 70 5f 61 63 6b 0d 29 54 1d c9 20 26 34 30 30 43 |p_ack.)T.. &400C| 00007450 30 3a f2 73 75 62 6d 65 6e 75 5f 77 61 72 6e 69 |0:.submenu_warni| 00007460 6e 67 0d 29 5e 1f c9 20 26 34 30 30 43 39 3a 49 |ng.)^.. &400C9:I| 00007470 63 6f 6e 42 61 72 4d 65 6e 75 4f 70 65 6e 25 3d |conBarMenuOpen%=| 00007480 30 0d 29 68 05 cb 0d 29 72 05 e1 0d 29 7c 04 0d |0.)h...)r...)|..| 00007490 29 86 2b f4 20 55 73 65 72 20 68 61 73 20 64 6f |).+. User has do| 000074a0 75 62 6c 65 20 63 6c 69 63 6b 65 64 20 6f 6e 20 |uble clicked on | 000074b0 61 20 66 69 6c 65 69 63 6f 6e 0d 29 90 3d f4 20 |a fileicon.).=. | 000074c0 52 65 73 70 6f 6e 73 65 20 2d 20 73 74 6f 72 65 |Response - store| 000074d0 20 61 20 6c 69 6e 6b 20 74 6f 20 74 68 69 73 20 | a link to this | 000074e0 66 69 6c 65 20 69 6e 20 74 68 65 20 7e 20 64 69 |file in the ~ di| 000074f0 72 65 63 74 6f 72 79 0d 29 9a 0f dd f2 64 61 74 |rectory.)....dat| 00007500 61 5f 6f 70 65 6e 0d 29 a4 1c ea 20 74 79 70 65 |a_open.)... type| 00007510 25 2c 20 64 65 73 74 69 6e 61 74 69 6f 6e 64 69 |%, destinationdi| 00007520 72 24 0d 29 ae 23 6e 65 77 6c 69 6e 6b 66 69 6c |r$.).#newlinkfil| 00007530 65 24 3d a4 73 74 72 69 6e 67 28 62 6c 6f 63 6b |e$=.string(block| 00007540 25 2b 34 34 29 0d 29 b8 28 6e 65 77 6c 69 6e 6b |%+44).).(newlink| 00007550 6c 65 61 66 24 3d a4 47 65 74 4c 65 61 66 4e 61 |leaf$=.GetLeafNa| 00007560 6d 65 28 62 6c 6f 63 6b 25 2b 34 34 29 0d 29 c2 |me(block%+44).).| 00007570 16 74 79 70 65 25 3d 21 28 62 6c 6f 63 6b 25 2b |.type%=!(block%+| 00007580 34 30 29 0d 29 cc 2c f4 20 50 52 4f 43 65 72 72 |40).).,. PROCerr| 00007590 6f 72 28 22 54 79 70 65 20 3d 20 22 2b 53 54 52 |or("Type = "+STR| 000075a0 24 28 74 79 70 65 25 29 2b 43 48 52 24 30 29 0d |$(type%)+CHR$0).| 000075b0 29 d6 38 64 65 73 74 69 6e 61 74 69 6f 6e 64 69 |).8destinationdi| 000075c0 72 24 3d 53 74 61 72 74 50 61 74 68 24 2b 22 2e |r$=StartPath$+".| 000075d0 55 73 65 72 73 2e 22 2b 55 73 65 72 24 2b 22 2e |Users."+User$+".| 000075e0 4c 69 6e 6b 73 2e 22 0d 29 e0 04 0d 29 e1 39 f4 |Links.".)...).9.| 000075f0 20 44 69 73 63 61 72 64 20 74 68 69 73 20 6c 69 | Discard this li| 00007600 6e 6b 20 62 65 63 61 75 73 65 20 77 65 20 61 72 |nk because we ar| 00007610 65 20 61 6c 72 65 61 64 79 20 70 72 6f 63 65 73 |e already proces| 00007620 73 69 6e 67 0d 29 e2 38 f4 20 61 20 6e 65 77 20 |sing.).8. a new | 00007630 6f 6e 65 2e 20 41 20 62 69 74 20 64 69 73 61 73 |one. A bit disas| 00007640 74 72 6f 75 73 20 74 68 69 73 20 62 75 74 20 77 |trous this but w| 00007650 65 20 64 6f 6e 27 74 20 68 61 76 65 0d 29 e3 27 |e don't have.).'| 00007660 f4 20 73 75 70 70 6f 72 74 20 66 6f 72 20 74 68 |. support for th| 00007670 72 65 61 64 73 20 69 6e 20 42 41 53 49 43 20 2e |reads in BASIC .| 00007680 2e 2e 2e 0d 29 ea 19 e7 20 28 41 75 74 6f 61 64 |....)... (Autoad| 00007690 64 4c 6f 63 6b 25 3c 3e 30 29 20 e1 0d 29 eb 04 |dLock%<>0) ..)..| 000076a0 0d 29 f4 14 e7 20 28 74 79 70 65 25 3d 34 30 39 |.)... (type%=409| 000076b0 36 29 20 8c 0d 29 fe 21 f4 20 53 74 6f 72 65 20 |6) ..).!. Store | 000076c0 74 68 69 73 20 64 69 72 65 63 74 6f 72 79 20 61 |this directory a| 000076d0 63 63 65 73 73 0d 2a 08 3f 64 65 73 74 69 6e 61 |ccess.*.?destina| 000076e0 74 69 6f 6e 64 69 72 24 3d 64 65 73 74 69 6e 61 |tiondir$=destina| 000076f0 74 69 6f 6e 64 69 72 24 2b bd 28 53 79 73 46 69 |tiondir$+.(SysFi| 00007700 6c 65 50 72 65 66 69 78 25 29 2b 22 46 6f 6c 64 |lePrefix%)+"Fold| 00007710 65 72 73 22 0d 2a 12 28 f2 61 75 74 6f 61 64 64 |ers".*.(.autoadd| 00007720 6e 65 77 73 68 6f 72 74 63 75 74 28 64 65 73 74 |newshortcut(dest| 00007730 69 6e 61 74 69 6f 6e 64 69 72 24 29 0d 2a 1c 05 |inationdir$).*..| 00007740 cd 0d 2a 26 04 0d 2a 30 14 e7 20 28 74 79 70 65 |..*&..*0.. (type| 00007750 25 3d 38 31 39 32 29 20 8c 0d 2a 3a 23 f4 20 53 |%=8192) ..*:#. S| 00007760 74 6f 72 65 20 74 68 69 73 20 61 70 70 6c 69 63 |tore this applic| 00007770 61 74 69 6f 6e 20 61 63 63 65 73 73 0d 2a 44 40 |ation access.*D@| 00007780 64 65 73 74 69 6e 61 74 69 6f 6e 64 69 72 24 3d |destinationdir$=| 00007790 64 65 73 74 69 6e 61 74 69 6f 6e 64 69 72 24 2b |destinationdir$+| 000077a0 bd 28 53 79 73 46 69 6c 65 50 72 65 66 69 78 25 |.(SysFilePrefix%| 000077b0 29 2b 22 50 72 6f 67 72 61 6d 73 22 0d 2a 4e 28 |)+"Programs".*N(| 000077c0 f2 61 75 74 6f 61 64 64 6e 65 77 73 68 6f 72 74 |.autoaddnewshort| 000077d0 63 75 74 28 64 65 73 74 69 6e 61 74 69 6f 6e 64 |cut(destinationd| 000077e0 69 72 24 29 0d 2a 58 05 cd 0d 2a 62 04 0d 2a 6c |ir$).*X...*b..*l| 000077f0 14 e7 20 28 74 79 70 65 25 3c 34 30 39 36 29 20 |.. (type%<4096) | 00007800 8c 0d 2a 76 1e 20 e7 20 28 74 79 70 65 25 3d 44 |..*v. . (type%=D| 00007810 6f 63 75 6d 65 6e 74 54 79 70 65 25 29 20 8c 0d |ocumentType%) ..| 00007820 2a 80 41 20 64 65 73 74 69 6e 61 74 69 6f 6e 64 |*.A destinationd| 00007830 69 72 24 3d 64 65 73 74 69 6e 61 74 69 6f 6e 64 |ir$=destinationd| 00007840 69 72 24 2b bd 28 53 79 73 46 69 6c 65 50 72 65 |ir$+.(SysFilePre| 00007850 66 69 78 25 29 2b 22 44 6f 63 75 6d 65 6e 74 22 |fix%)+"Document"| 00007860 0d 2a 8a 29 20 f2 61 75 74 6f 61 64 64 6e 65 77 |.*.) .autoaddnew| 00007870 73 68 6f 72 74 63 75 74 28 64 65 73 74 69 6e 61 |shortcut(destina| 00007880 74 69 6f 6e 64 69 72 24 29 0d 2a 94 06 20 cd 0d |tiondir$).*.. ..| 00007890 2a 9e 05 20 0d 2a a8 1d 20 e7 20 28 74 79 70 65 |*.. .*.. . (type| 000078a0 25 3d 50 69 63 74 75 72 65 54 79 70 65 25 29 20 |%=PictureType%) | 000078b0 8c 0d 2a b2 40 20 64 65 73 74 69 6e 61 74 69 6f |..*.@ destinatio| 000078c0 6e 64 69 72 24 3d 64 65 73 74 69 6e 61 74 69 6f |ndir$=destinatio| 000078d0 6e 64 69 72 24 2b bd 28 53 79 73 46 69 6c 65 50 |ndir$+.(SysFileP| 000078e0 72 65 66 69 78 25 29 2b 22 50 69 63 74 75 72 65 |refix%)+"Picture| 000078f0 22 0d 2a bc 29 20 f2 61 75 74 6f 61 64 64 6e 65 |".*.) .autoaddne| 00007900 77 73 68 6f 72 74 63 75 74 28 64 65 73 74 69 6e |wshortcut(destin| 00007910 61 74 69 6f 6e 64 69 72 24 29 0d 2a c6 06 20 cd |ationdir$).*.. .| 00007920 0d 2a d0 04 0d 2a da 35 20 e7 20 28 74 79 70 65 |.*...*.5 . (type| 00007930 25 3c 3e 50 69 63 74 75 72 65 54 79 70 65 25 20 |%<>PictureType% | 00007940 80 20 74 79 70 65 25 3c 3e 44 6f 63 75 6d 65 6e |. type%<>Documen| 00007950 74 54 79 70 65 25 29 20 8c 0d 2a e4 3e 20 64 65 |tType%) ..*.> de| 00007960 73 74 69 6e 61 74 69 6f 6e 64 69 72 24 3d 64 65 |stinationdir$=de| 00007970 73 74 69 6e 61 74 69 6f 6e 64 69 72 24 2b bd 28 |stinationdir$+.(| 00007980 53 79 73 46 69 6c 65 50 72 65 66 69 78 25 29 2b |SysFilePrefix%)+| 00007990 22 46 69 6c 65 73 22 0d 2a ee 29 20 f2 61 75 74 |"Files".*.) .aut| 000079a0 6f 61 64 64 6e 65 77 73 68 6f 72 74 63 75 74 28 |oaddnewshortcut(| 000079b0 64 65 73 74 69 6e 61 74 69 6f 6e 64 69 72 24 29 |destinationdir$)| 000079c0 0d 2a f8 06 20 cd 0d 2b 02 05 cd 0d 2b 0c 04 0d |.*.. ..+....+...| 000079d0 2b 16 05 e1 0d 2b 20 04 0d 2b 2a 2c dd f2 61 75 |+....+ ..+*,..au| 000079e0 74 6f 61 64 64 6e 65 77 73 68 6f 72 74 63 75 74 |toaddnewshortcut| 000079f0 28 61 75 74 6f 64 72 6f 70 64 69 72 65 63 74 6f |(autodropdirecto| 00007a00 72 79 24 29 0d 2b 34 23 ea 20 6e 75 6d 62 65 72 |ry$).+4#. number| 00007a10 25 2c 20 6e 65 78 74 25 2c 6e 75 6d 62 65 72 6f |%, next%,numbero| 00007a20 66 69 74 65 6d 73 25 0d 2b 3e 3e ea 20 6f 6c 64 |fitems%.+>>. old| 00007a30 65 73 74 64 61 74 65 25 2c 6f 6c 64 65 73 74 6e |estdate%,oldestn| 00007a40 61 6d 65 24 2c 6f 6c 64 65 73 74 74 79 70 65 25 |ame$,oldesttype%| 00007a50 2c 6f 6c 64 65 73 74 6e 65 78 74 25 2c 6f 6c 64 |,oldestnext%,old| 00007a60 6e 65 78 74 25 0d 2b 48 10 ea 20 64 65 6c 73 74 |next%.+H.. delst| 00007a70 72 69 6e 67 24 0d 2b 52 12 41 75 74 6f 61 64 64 |ring$.+R.Autoadd| 00007a80 4c 6f 63 6b 25 3d 31 0d 2b 5c 22 f2 65 6e 73 75 |Lock%=1.+\".ensu| 00007a90 72 65 64 69 72 28 61 75 74 6f 64 72 6f 70 64 69 |redir(autodropdi| 00007aa0 72 65 63 74 6f 72 79 24 29 0d 2b 66 34 f4 20 41 |rectory$).+f4. A| 00007ab0 75 74 6f 20 69 6e 73 65 72 74 20 64 69 72 65 63 |uto insert direc| 00007ac0 74 6f 72 79 73 20 68 61 76 65 20 61 20 6c 69 6d |torys have a lim| 00007ad0 69 74 20 6f 66 20 39 20 69 74 65 6d 73 0d 2b 70 |it of 9 items.+p| 00007ae0 1e f4 20 49 73 20 6c 69 6e 6b 20 64 69 72 65 63 |.. Is link direc| 00007af0 74 6f 72 79 20 65 6d 70 74 79 3f 0d 2b 7a 14 6e |tory empty?.+z.n| 00007b00 75 6d 62 65 72 6f 66 69 74 65 6d 73 25 3d 30 0d |umberofitems%=0.| 00007b10 2b 84 0b 6e 65 78 74 25 3d 30 0d 2b 8e 11 6f 6c |+..next%=0.+..ol| 00007b20 64 65 73 74 64 61 74 65 25 3d 30 0d 2b 98 26 c8 |destdate%=0.+.&.| 00007b30 95 28 6e 65 78 74 25 3c 3e 2d 31 20 80 20 6e 75 |.(next%<>-1 . nu| 00007b40 6d 62 65 72 6f 66 69 74 65 6d 73 25 3c 3d 31 36 |mberofitems%<=16| 00007b50 29 0d 2b a2 22 24 73 74 72 69 6e 67 25 3d 61 75 |).+."$string%=au| 00007b60 74 6f 64 72 6f 70 64 69 72 65 63 74 6f 72 79 24 |todropdirectory$| 00007b70 2b bd 30 0d 2b ac 12 6f 6c 64 6e 65 78 74 25 3d |+.0.+..oldnext%=| 00007b80 6e 65 78 74 25 0d 2b b6 45 c8 99 20 22 4f 53 5f |next%.+.E.. "OS_| 00007b90 47 42 50 42 22 2c 31 31 2c 73 74 72 69 6e 67 25 |GBPB",11,string%| 00007ba0 2c 64 62 6c 6f 63 6b 25 2c 31 2c 6e 65 78 74 25 |,dblock%,1,next%| 00007bb0 2c 36 33 2c 22 2a 22 20 b8 20 2c 2c 2c 6e 75 6d |,63,"*" . ,,,num| 00007bc0 62 65 72 25 2c 6e 65 78 74 25 0d 2b c0 11 e7 20 |ber%,next%.+... | 00007bd0 6e 65 78 74 25 3c 3e 2d 31 20 8c 0d 2b ca 15 6e |next%<>-1 ..+..n| 00007be0 75 6d 62 65 72 6f 66 69 74 65 6d 73 25 2b 3d 31 |umberofitems%+=1| 00007bf0 0d 2b d4 7c e7 20 28 28 64 62 6c 6f 63 6b 25 21 |.+.|. ((dblock%!| 00007c00 32 34 29 3c 6f 6c 64 65 73 74 64 61 74 65 25 20 |24)<oldestdate% | 00007c10 84 20 6f 6c 64 65 73 74 64 61 74 65 25 3d 30 29 |. oldestdate%=0)| 00007c20 20 6f 6c 64 65 73 74 64 61 74 65 25 3d 64 62 6c | oldestdate%=dbl| 00007c30 6f 63 6b 25 21 32 34 3a 6f 6c 64 65 73 74 6e 61 |ock%!24:oldestna| 00007c40 6d 65 24 3d a4 73 74 72 69 6e 67 28 64 62 6c 6f |me$=.string(dblo| 00007c50 63 6b 25 2b 32 39 29 3a 6f 6c 64 65 73 74 6e 65 |ck%+29):oldestne| 00007c60 78 74 25 3d 6f 6c 64 6e 65 78 74 25 0d 2b de 05 |xt%=oldnext%.+..| 00007c70 cd 0d 2b e8 04 0d 2b f2 39 f4 20 47 69 76 65 20 |..+...+.9. Give | 00007c80 61 20 62 69 74 20 6d 6f 72 65 20 63 6f 6e 74 72 |a bit more contr| 00007c90 6f 6c 20 74 6f 20 75 73 65 72 20 77 68 69 6c 65 |ol to user while| 00007ca0 20 75 70 64 61 74 65 69 6e 67 20 74 68 65 0d 2b | updateing the.+| 00007cb0 fc 31 f4 20 6c 69 6e 6b 73 20 64 69 72 65 63 74 |.1. links direct| 00007cc0 6f 72 79 2e 20 54 68 69 73 20 6d 61 79 20 62 65 |ory. This may be| 00007cd0 20 61 20 62 61 64 20 69 64 65 61 20 2e 2e 2e 0d | a bad idea ....| 00007ce0 2c 06 09 f2 70 6f 6c 6c 0d 2c 10 04 0d 2c 1a 05 |,...poll.,...,..| 00007cf0 ce 0d 2c 24 1a e7 20 28 6e 75 6d 62 65 72 6f 66 |..,$.. (numberof| 00007d00 69 74 65 6d 73 25 3c 39 29 20 8c 0d 2c 2e 26 20 |items%<9) ..,.& | 00007d10 f4 20 49 66 20 73 6f 20 74 68 65 6e 20 61 75 74 |. If so then aut| 00007d20 6f 6d 61 74 69 63 61 6c 6c 79 20 69 6e 73 65 72 |omatically inser| 00007d30 74 0d 2c 38 28 20 f2 61 64 64 6e 65 77 73 68 6f |t.,8( .addnewsho| 00007d40 72 74 63 75 74 28 61 75 74 6f 64 72 6f 70 64 69 |rtcut(autodropdi| 00007d50 72 65 63 74 6f 72 79 24 29 0d 2c 42 05 cc 0d 2c |rectory$).,B...,| 00007d60 4c 2b 20 f4 20 49 6e 74 65 6c 6c 69 67 65 6e 74 |L+ . Intelligent| 00007d70 6c 79 20 64 65 6c 65 74 65 20 61 6e 20 6f 6c 64 |ly delete an old| 00007d80 20 66 69 6c 65 20 61 6e 64 0d 2c 56 20 20 f4 20 | file and.,V . | 00007d90 47 65 74 20 66 69 6c 65 74 79 70 65 20 6f 66 20 |Get filetype of | 00007da0 74 68 69 73 20 66 69 6c 65 0d 2c 60 23 20 24 73 |this file.,`# $s| 00007db0 74 72 69 6e 67 25 3d 61 75 74 6f 64 72 6f 70 64 |tring%=autodropd| 00007dc0 69 72 65 63 74 6f 72 79 24 2b bd 30 0d 2c 6a 39 |irectory$+.0.,j9| 00007dd0 20 c8 99 20 22 4f 53 5f 47 42 50 42 22 2c 31 32 | .. "OS_GBPB",12| 00007de0 2c 73 74 72 69 6e 67 25 2c 64 62 6c 6f 63 6b 25 |,string%,dblock%| 00007df0 2c 31 2c 6f 6c 64 65 73 74 6e 65 78 74 25 2c 36 |,1,oldestnext%,6| 00007e00 33 2c 22 2a 22 0d 2c 74 1b 20 6f 6c 64 65 73 74 |3,"*".,t. oldest| 00007e10 74 79 70 65 25 3d 64 62 6c 6f 63 6b 25 21 32 30 |type%=dblock%!20| 00007e20 0d 2c 7e 05 20 0d 2c 88 5d 20 f4 20 50 52 4f 43 |.,~. .,.] . PROC| 00007e30 65 72 72 6f 72 28 22 4f 6c 64 65 73 74 20 66 69 |error("Oldest fi| 00007e40 6c 65 20 74 6f 20 72 65 6d 6f 76 65 20 3a 20 22 |le to remove : "| 00007e50 2b 6f 6c 64 65 73 74 6e 61 6d 65 24 2b 22 20 6f |+oldestname$+" o| 00007e60 66 20 74 79 70 65 20 22 2b 53 54 52 24 7e 28 6f |f type "+STR$~(o| 00007e70 6c 64 65 73 74 74 79 70 65 25 29 2b 43 48 52 24 |ldesttype%)+CHR$| 00007e80 30 29 0d 2c 92 2d 20 f4 20 44 65 6c 65 74 65 20 |0).,.- . Delete | 00007e90 74 68 65 20 6f 6c 64 65 73 74 20 6c 69 6e 6b 20 |the oldest link | 00007ea0 69 6e 20 74 68 69 73 20 64 69 72 20 2e 2e 2e 0d |in this dir ....| 00007eb0 2c 9c 3a 20 f4 20 46 69 6e 61 6c 20 63 68 65 63 |,.: . Final chec| 00007ec0 6b 20 2d 20 21 53 74 61 72 74 20 63 61 6e 20 6f |k - !Start can o| 00007ed0 6e 6c 79 20 72 65 6d 6f 76 65 20 61 20 66 69 6c |nly remove a fil| 00007ee0 65 20 69 66 20 69 74 27 73 0d 2c a6 36 20 f4 20 |e if it's.,.6 . | 00007ef0 66 69 6c 65 74 79 70 65 20 69 73 20 26 61 66 33 |filetype is &af3| 00007f00 20 2e 2e 2e 20 28 50 72 65 63 61 75 74 69 6f 6e | ... (Precaution| 00007f10 20 61 67 61 69 6e 73 74 20 65 72 72 6f 72 29 0d | against error).| 00007f20 2c b0 1b 20 e7 20 28 6f 6c 64 65 73 74 74 79 70 |,.. . (oldesttyp| 00007f30 65 25 3d 26 61 66 33 29 20 8c 0d 2c ba 3c 20 64 |e%=&af3) ..,.< d| 00007f40 65 6c 73 74 72 69 6e 67 24 3d 22 64 65 6c 65 74 |elstring$="delet| 00007f50 65 20 22 2b 61 75 74 6f 64 72 6f 70 64 69 72 65 |e "+autodropdire| 00007f60 63 74 6f 72 79 24 2b 22 2e 22 2b 6f 6c 64 65 73 |ctory$+"."+oldes| 00007f70 74 6e 61 6d 65 24 0d 2c c4 34 20 f4 20 50 52 4f |tname$.,.4 . PRO| 00007f80 43 65 72 72 6f 72 28 22 61 62 6f 75 74 20 74 6f |Cerror("about to| 00007f90 20 4f 53 43 4c 49 20 22 2b 64 65 6c 73 74 72 69 | OSCLI "+delstri| 00007fa0 6e 67 24 2b 43 48 52 24 30 29 0d 2c ce 15 20 ff |ng$+CHR$0).,.. .| 00007fb0 28 64 65 6c 73 74 72 69 6e 67 24 2b bd 30 29 0d |(delstring$+.0).| 00007fc0 2c d8 1b 20 f4 20 69 6e 73 65 72 74 20 61 20 6e |,.. . insert a n| 00007fd0 65 77 20 6f 6e 65 20 2e 2e 2e 0d 2c e2 28 20 f2 |ew one ....,.( .| 00007fe0 61 64 64 6e 65 77 73 68 6f 72 74 63 75 74 28 61 |addnewshortcut(a| 00007ff0 75 74 6f 64 72 6f 70 64 69 72 65 63 74 6f 72 79 |utodropdirectory| 00008000 24 29 0d 2c ec 06 20 cd 0d 2c f6 05 cd 0d 2d 00 |$).,.. ..,....-.| 00008010 12 41 75 74 6f 61 64 64 4c 6f 63 6b 25 3d 30 0d |.AutoaddLock%=0.| 00008020 2d 0a 05 e1 0d 2d 14 04 0d 2d 1e 32 f4 20 50 72 |-....-...-.2. Pr| 00008030 6f 6d 70 74 20 75 73 65 72 20 74 6f 20 73 65 6c |ompt user to sel| 00008040 65 63 74 20 64 69 72 65 63 74 6f 72 79 20 66 6f |ect directory fo| 00008050 72 20 6e 65 77 20 6c 69 6e 6b 0d 2d 28 18 dd f2 |r new link.-(...| 00008060 64 61 74 61 5f 6c 6f 61 64 5f 61 64 64 5f 6c 69 |data_load_add_li| 00008070 6e 6b 0d 2d 32 2a ea 20 70 61 74 68 24 2c 6c 65 |nk.-2*. path$,le| 00008080 61 66 24 2c 74 79 70 65 25 2c 6c 65 61 66 70 74 |af$,type%,leafpt| 00008090 72 25 2c 6c 69 6e 6b 6e 61 6d 65 24 0d 2d 3c 20 |r%,linkname$.-< | 000080a0 e7 20 28 a4 43 68 65 63 6b 4c 69 6e 6b 73 44 69 |. (.CheckLinksDi| 000080b0 72 45 78 69 73 74 73 3d 30 29 20 e1 0d 2d 46 1c |rExists=0) ..-F.| 000080c0 70 61 74 68 24 3d a4 73 74 72 69 6e 67 28 62 6c |path$=.string(bl| 000080d0 6f 63 6b 25 2b 34 34 29 0d 2d 50 21 6c 65 61 66 |ock%+44).-P!leaf| 000080e0 24 3d a4 47 65 74 4c 65 61 66 4e 61 6d 65 28 62 |$=.GetLeafName(b| 000080f0 6c 6f 63 6b 25 2b 34 34 29 0d 2d 5a 16 74 79 70 |lock%+44).-Z.typ| 00008100 65 25 3d 21 28 62 6c 6f 63 6b 25 2b 34 30 29 0d |e%=!(block%+40).| 00008110 2d 64 38 6c 69 6e 6b 6e 61 6d 65 24 3d 53 74 61 |-d8linkname$=Sta| 00008120 72 74 50 61 74 68 24 2b 22 2e 55 73 65 72 73 2e |rtPath$+".Users.| 00008130 22 2b 55 73 65 72 24 2b 22 2e 4c 69 6e 6b 73 2e |"+User$+".Links.| 00008140 22 2b 6c 65 61 66 24 0d 2d 6e 16 6e 65 77 6c 69 |"+leaf$.-n.newli| 00008150 6e 6b 6c 65 61 66 24 3d 6c 65 61 66 24 0d 2d 78 |nkleaf$=leaf$.-x| 00008160 23 6e 65 77 6c 69 6e 6b 66 69 6c 65 24 3d a4 73 |#newlinkfile$=.s| 00008170 74 72 69 6e 67 28 62 6c 6f 63 6b 25 2b 34 34 29 |tring(block%+44)| 00008180 0d 2d 82 1e f4 20 49 73 20 6c 69 6e 6b 20 64 69 |.-... Is link di| 00008190 72 65 63 74 6f 72 79 20 65 6d 70 74 79 3f 0d 2d |rectory empty?.-| 000081a0 8c 33 24 73 74 72 69 6e 67 25 3d 53 74 61 72 74 |.3$string%=Start| 000081b0 50 61 74 68 24 2b 22 2e 55 73 65 72 73 2e 22 2b |Path$+".Users."+| 000081c0 55 73 65 72 24 2b 22 2e 4c 69 6e 6b 73 22 2b bd |User$+".Links"+.| 000081d0 30 0d 2d 96 3b c8 99 20 22 4f 53 5f 47 42 50 42 |0.-.;.. "OS_GBPB| 000081e0 22 2c 31 30 2c 73 74 72 69 6e 67 25 2c 64 62 6c |",10,string%,dbl| 000081f0 6f 63 6b 25 2c 31 2c 30 2c 36 33 2c 22 2a 22 20 |ock%,1,0,63,"*" | 00008200 b8 20 2c 2c 2c 6e 75 6d 62 65 72 25 0d 2d a0 11 |. ,,,number%.-..| 00008210 e7 20 6e 75 6d 62 65 72 25 3d 30 20 8c 0d 2d aa |. number%=0 ..-.| 00008220 34 f4 20 49 66 20 73 6f 20 74 68 65 6e 20 61 75 |4. If so then au| 00008230 74 6f 6d 61 74 69 63 61 6c 6c 79 20 61 64 64 20 |tomatically add | 00008240 74 6f 20 72 6f 6f 74 20 64 69 72 65 63 74 6f 72 |to root director| 00008250 79 0d 2d b4 38 f2 61 64 64 6e 65 77 73 68 6f 72 |y.-.8.addnewshor| 00008260 74 63 75 74 28 53 74 61 72 74 50 61 74 68 24 2b |tcut(StartPath$+| 00008270 22 2e 55 73 65 72 73 2e 22 2b 55 73 65 72 24 2b |".Users."+User$+| 00008280 22 2e 4c 69 6e 6b 73 22 29 0d 2d be 05 cc 0d 2d |".Links").-....-| 00008290 c8 18 f2 73 68 6f 77 73 68 6f 72 74 63 75 74 6d |...showshortcutm| 000082a0 65 6e 75 28 31 29 0d 2d d2 05 cd 0d 2d dc 05 e1 |enu(1).-....-...| 000082b0 0d 2d e6 04 0d 2d f0 2c f4 20 41 64 64 20 6e 65 |.-...-.,. Add ne| 000082c0 77 20 6c 69 6e 6b 20 74 6f 20 74 68 65 20 73 68 |w link to the sh| 000082d0 6f 72 74 63 75 74 20 64 69 72 65 63 74 6f 72 79 |ortcut directory| 000082e0 0d 2d fa 24 dd f2 61 64 64 6e 65 77 73 68 6f 72 |.-.$..addnewshor| 000082f0 74 63 75 74 28 64 72 6f 70 64 69 72 65 63 74 6f |tcut(dropdirecto| 00008300 72 79 24 29 0d 2e 04 18 ea 20 6c 69 6e 6b 6e 61 |ry$)..... linkna| 00008310 6d 65 24 2c 6c 65 61 66 70 74 72 25 0d 2e 0e 2d |me$,leafptr%...-| 00008320 6c 69 6e 6b 6e 61 6d 65 24 3d 64 72 6f 70 64 69 |linkname$=dropdi| 00008330 72 65 63 74 6f 72 79 24 2b 22 2e 22 2b 6e 65 77 |rectory$+"."+new| 00008340 6c 69 6e 6b 6c 65 61 66 24 0d 2e 18 1c 24 73 74 |linkleaf$....$st| 00008350 72 69 6e 67 25 3d 6e 65 77 6c 69 6e 6b 66 69 6c |ring%=newlinkfil| 00008360 65 24 2b bd 30 0d 2e 22 41 f4 50 52 4f 43 65 72 |e$+.0.."A.PROCer| 00008370 72 6f 72 28 22 43 6f 6e 74 65 6e 74 73 20 6f 66 |ror("Contents of| 00008380 20 22 2b 6c 69 6e 6b 6e 61 6d 65 24 2b 22 20 3d | "+linkname$+" =| 00008390 20 22 2b 6e 65 77 6c 69 6e 6b 66 69 6c 65 24 2b | "+newlinkfile$+| 000083a0 43 48 52 24 30 29 0d 2e 2c 14 6c 65 61 66 70 74 |CHR$0)..,.leafpt| 000083b0 72 25 3d 73 74 72 69 6e 67 25 0d 2e 36 38 f4 20 |r%=string%..68. | 000083c0 43 68 65 63 6b 20 74 6f 20 73 65 65 20 69 66 20 |Check to see if | 000083d0 74 68 69 73 20 66 69 6c 65 20 61 6c 72 65 61 64 |this file alread| 000083e0 79 20 65 78 69 73 74 73 20 61 6e 64 20 69 66 20 |y exists and if | 000083f0 73 6f 0d 2e 40 1b f4 20 70 72 6f 6d 70 74 20 66 |so..@.. prompt f| 00008400 6f 72 20 6f 76 65 72 77 72 69 74 65 2e 0d 2e 4a |or overwrite...J| 00008410 16 58 25 3d ae 28 6c 69 6e 6b 6e 61 6d 65 24 2b |.X%=.(linkname$+| 00008420 bd 30 29 0d 2e 54 18 c8 95 28 28 3f 6c 65 61 66 |.0)..T...((?leaf| 00008430 70 74 72 25 29 20 3e 20 33 31 29 0d 2e 5e 13 d5 |ptr%) > 31)..^..| 00008440 23 58 25 2c 20 3f 6c 65 61 66 70 74 72 25 0d 2e |#X%, ?leafptr%..| 00008450 68 0f 6c 65 61 66 70 74 72 25 2b 3d 31 0d 2e 72 |h.leafptr%+=1..r| 00008460 05 ce 0d 2e 7c 26 d5 23 58 25 2c 20 31 30 3a f4 |....|&.#X%, 10:.| 00008470 20 4f 75 74 70 75 74 20 61 20 74 65 72 6d 69 6e | Output a termin| 00008480 61 74 69 6e 67 20 4c 46 0d 2e 86 08 d9 23 58 25 |ating LF.....#X%| 00008490 0d 2e 90 1c f4 20 53 65 74 20 74 79 70 65 20 61 |..... Set type a| 000084a0 70 70 72 6f 70 72 69 61 74 65 6c 79 0d 2e 9a 25 |ppropriately...%| 000084b0 ff 28 22 53 65 74 54 79 70 65 20 22 2b 6c 69 6e |.("SetType "+lin| 000084c0 6b 6e 61 6d 65 24 2b 22 20 61 66 33 22 2b bd 30 |kname$+" af3"+.0| 000084d0 29 0d 2e a4 05 e1 0d 2e ae 04 0d 2e b8 0e dd f2 |)...............| 000084e0 64 61 74 61 5f 61 63 6b 0d 2e c2 1f f4 20 53 74 |data_ack..... St| 000084f0 6f 72 65 20 70 61 74 68 20 69 6e 20 74 65 6d 70 |ore path in temp| 00008500 20 73 74 72 69 6e 67 0d 2e cc 1c 70 61 74 68 24 | string....path$| 00008510 3d a4 73 74 72 69 6e 67 28 62 6c 6f 63 6b 25 2b |=.string(block%+| 00008520 34 34 29 0d 2e d6 11 70 61 74 68 24 3d c0 70 61 |44)....path$=.pa| 00008530 74 68 24 29 0d 2e e0 16 64 68 61 6e 64 6c 65 25 |th$)....dhandle%| 00008540 3d 62 6c 6f 63 6b 25 21 32 30 0d 2e ea 23 e7 20 |=block%!20...#. | 00008550 a7 70 61 74 68 24 2c 22 3c 57 69 6d 70 24 53 63 |.path$,"<Wimp$Sc| 00008560 72 61 70 44 69 72 3e 22 29 3e 30 20 8c 0d 2e f4 |rapDir>")>0 ....| 00008570 27 20 f4 49 46 20 28 64 72 61 67 5f 69 63 6f 6e |' .IF (drag_icon| 00008580 25 3d 61 64 64 5f 77 69 6e 64 6f 77 25 29 20 54 |%=add_window%) T| 00008590 48 45 4e 20 0d 2e fe 40 20 20 f2 65 72 72 6f 72 |HEN ...@ .error| 000085a0 28 22 59 6f 75 20 63 61 6e 27 74 20 61 64 64 20 |("You can't add | 000085b0 74 68 61 74 20 74 6f 20 74 68 65 20 46 69 6c 65 |that to the File| 000085c0 72 20 77 69 6e 64 6f 77 20 63 61 63 68 65 2e 22 |r window cache."| 000085d0 2b bd 30 29 0d 2f 08 0b 20 f4 45 4e 44 49 46 0d |+.0)./.. .ENDIF.| 000085e0 2f 12 06 20 e1 0d 2f 1c 05 cd 0d 2f 26 1f f4 20 |/.. ../..../&.. | 000085f0 43 6f 6d 70 69 6c 65 20 64 65 73 6b 74 6f 70 20 |Compile desktop | 00008600 62 6f 6f 74 20 66 69 6c 65 0d 2f 30 14 c8 99 22 |boot file./0..."| 00008610 48 6f 75 72 67 6c 61 73 73 5f 4f 6e 22 0d 2f 3a |Hourglass_On"./:| 00008620 2d e7 20 28 64 72 61 67 5f 69 63 6f 6e 25 3d 61 |-. (drag_icon%=a| 00008630 64 64 5f 77 69 6e 64 6f 77 25 29 20 8c 20 f2 73 |dd_window%) . .s| 00008640 61 76 65 64 65 73 6b 74 6f 70 0d 2f 44 36 e7 20 |avedesktop./D6. | 00008650 28 64 72 61 67 5f 69 63 6f 6e 25 3d 73 75 62 74 |(drag_icon%=subt| 00008660 72 61 63 74 5f 77 69 6e 64 6f 77 25 29 20 8c 20 |ract_window%) . | 00008670 f2 73 75 62 74 72 61 63 74 5f 77 69 6e 64 6f 77 |.subtract_window| 00008680 0d 2f 4e 05 e1 0d 2f 58 04 0d 2f 62 11 dd f2 64 |./N.../X../b...d| 00008690 65 73 6b 74 6f 70 5f 61 63 6b 0d 2f 6c 36 f4 20 |esktop_ack./l6. | 000086a0 49 66 20 77 65 20 67 65 74 20 61 20 64 65 73 6b |If we get a desk| 000086b0 74 6f 70 5f 61 63 6b 20 74 68 65 6e 20 74 68 61 |top_ack then tha| 000086c0 74 20 6d 65 61 6e 73 20 74 68 61 74 20 61 6c 6c |t means that all| 000086d0 0d 2f 76 39 f4 20 61 70 70 6c 69 63 61 74 69 6f |./v9. applicatio| 000086e0 6e 73 20 68 61 76 65 20 72 65 73 70 6f 6e 64 65 |ns have responde| 000086f0 64 20 74 6f 20 74 68 65 20 72 65 71 75 65 73 74 |d to the request| 00008700 20 74 6f 20 77 72 69 74 65 0d 2f 80 1f f4 20 74 | to write./... t| 00008710 6f 20 74 68 65 20 64 65 73 6b 74 6f 70 20 62 6f |o the desktop bo| 00008720 6f 74 20 66 69 6c 65 2e 0d 2f 8a 1c e7 20 28 44 |ot file../... (D| 00008730 58 25 3c 3e 30 29 20 8c 20 d9 23 44 58 25 3a 44 |X%<>0) . .#DX%:D| 00008740 58 25 3d 30 0d 2f 94 2a e7 20 64 72 61 67 5f 69 |X%=0./.*. drag_i| 00008750 63 6f 6e 25 3d 61 64 64 5f 77 69 6e 64 6f 77 25 |con%=add_window%| 00008760 20 8c 20 f2 61 64 64 5f 77 69 6e 64 6f 77 0d 2f | . .add_window./| 00008770 9e 05 e1 0d 2f a8 04 0d 2f b2 39 f4 20 2a 2a 2a |..../.../.9. ***| 00008780 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 000087b0 0d 2f bc 04 0d 2f c6 10 dd f2 61 64 64 5f 77 69 |./.../....add_wi| 000087c0 6e 64 6f 77 0d 2f d0 39 f4 20 47 6f 20 74 68 72 |ndow./.9. Go thr| 000087d0 6f 75 67 68 20 64 65 73 6b 74 6f 70 20 62 6f 6f |ough desktop boo| 000087e0 74 66 69 6c 65 20 6c 6f 6f 6b 69 6e 67 20 66 6f |tfile looking fo| 000087f0 72 20 70 61 74 68 20 73 74 72 69 6e 67 0d 2f da |r path string./.| 00008800 39 f4 20 49 66 20 74 68 69 73 20 6c 69 6e 65 20 |9. If this line | 00008810 63 6f 6e 74 61 69 6e 73 20 70 61 74 68 5f 73 74 |contains path_st| 00008820 72 69 6e 67 20 74 68 65 6e 20 61 64 64 20 72 65 |ring then add re| 00008830 6c 65 76 61 6e 74 0d 2f e4 27 f4 20 6c 69 6e 65 |levant./.'. line| 00008840 20 6f 66 20 62 6f 6f 74 20 66 69 6c 65 20 74 6f | of boot file to| 00008850 20 63 6f 6e 66 69 67 20 66 69 6c 65 2e 0d 2f ee | config file../.| 00008860 0f 6e 65 77 6c 69 6e 65 24 3d 22 22 0d 2f f8 22 |.newline$=""./."| 00008870 58 25 3d 8e 28 53 74 61 72 74 50 61 74 68 24 2b |X%=.(StartPath$+| 00008880 22 2e 74 6d 70 66 69 6c 65 22 2b bd 30 29 0d 30 |".tmpfile"+.0).0| 00008890 02 05 f5 0d 30 0c 14 41 24 3d a4 67 65 74 5f 6c |....0..A$=.get_l| 000088a0 69 6e 65 28 58 25 29 0d 30 16 1b 70 61 74 68 5f |ine(X%).0..path_| 000088b0 73 74 61 72 74 25 3d a7 41 24 2c 20 70 61 74 68 |start%=.A$, path| 000088c0 24 29 0d 30 20 19 70 61 74 68 5f 6c 65 6e 67 74 |$).0 .path_lengt| 000088d0 68 25 3d a9 28 70 61 74 68 24 29 0d 30 2a 66 e7 |h%=.(path$).0*f.| 000088e0 20 28 a7 41 24 2c 20 22 46 69 6c 65 72 5f 4f 70 | (.A$, "Filer_Op| 000088f0 65 6e 44 69 72 22 29 3e 30 20 80 20 70 61 74 68 |enDir")>0 . path| 00008900 5f 73 74 61 72 74 25 3e 30 20 80 20 97 28 c1 41 |_start%>0 . .(.A| 00008910 24 2c 70 61 74 68 5f 73 74 61 72 74 25 2b 70 61 |$,path_start%+pa| 00008920 74 68 5f 6c 65 6e 67 74 68 25 2c 31 29 29 3c 3d |th_length%,1))<=| 00008930 33 32 29 20 8c 20 6e 65 77 6c 69 6e 65 24 3d 41 |32) . newline$=A| 00008940 24 0d 30 34 0a fd 20 c5 23 58 25 0d 30 3e 08 d9 |$.04.. .#X%.0>..| 00008950 23 58 25 0d 30 48 37 f4 20 4e 6f 20 73 65 72 69 |#X%.0H7. No seri| 00008960 6f 75 73 20 70 72 65 63 61 75 74 69 6f 6e 73 20 |ous precautions | 00008970 6e 65 65 64 65 64 20 68 65 72 65 20 62 65 63 61 |needed here beca| 00008980 75 73 65 20 6f 66 20 74 68 65 0d 30 52 20 f4 20 |use of the.0R . | 00008990 66 69 6c 65 20 6e 61 6d 65 20 75 73 65 64 20 2e |file name used .| 000089a0 2e 2e 20 74 6d 70 66 69 6c 65 0d 30 5c 29 ff 28 |.. tmpfile.0\).(| 000089b0 22 44 65 6c 65 74 65 20 22 2b 53 74 61 72 74 50 |"Delete "+StartP| 000089c0 61 74 68 24 2b 22 2e 74 6d 70 66 69 6c 65 22 2b |ath$+".tmpfile"+| 000089d0 bd 30 29 0d 30 66 04 0d 30 70 31 58 25 3d ad 28 |.0).0f..0p1X%=.(| 000089e0 53 74 61 72 74 50 61 74 68 24 2b 22 2e 55 73 65 |StartPath$+".Use| 000089f0 72 73 2e 22 2b 55 73 65 72 24 2b 22 2e 7e 7e 4f |rs."+User$+".~~O| 00008a00 70 65 6e 22 2b bd 30 29 0d 30 7a 0d cf 23 58 25 |pen"+.0).0z..#X%| 00008a10 3d a2 23 58 25 0d 30 84 1b f2 70 75 74 5f 6c 69 |=.#X%.0...put_li| 00008a20 6e 65 28 58 25 2c 20 6e 65 77 6c 69 6e 65 24 29 |ne(X%, newline$)| 00008a30 0d 30 8e 08 d9 23 58 25 0d 30 98 04 0d 30 a2 32 |.0...#X%.0...0.2| 00008a40 58 25 3d ad 28 53 74 61 72 74 50 61 74 68 24 2b |X%=.(StartPath$+| 00008a50 22 2e 55 73 65 72 73 2e 22 2b 55 73 65 72 24 2b |".Users."+User$+| 00008a60 22 2e 7e 7e 43 6c 6f 73 65 22 2b bd 30 29 0d 30 |".~~Close"+.0).0| 00008a70 ac 0d cf 23 58 25 3d a2 23 58 25 0d 30 b6 2a f2 |...#X%=.#X%.0.*.| 00008a80 70 75 74 5f 6c 69 6e 65 28 58 25 2c 20 22 46 69 |put_line(X%, "Fi| 00008a90 6c 65 72 5f 43 6c 6f 73 65 44 69 72 20 22 2b 70 |ler_CloseDir "+p| 00008aa0 61 74 68 24 29 0d 30 c0 08 d9 23 58 25 0d 30 ca |ath$).0...#X%.0.| 00008ab0 1d f4 20 52 65 2d 69 6e 69 74 69 61 6c 69 73 65 |.. Re-initialise| 00008ac0 20 74 68 65 20 43 61 63 68 65 0d 30 d4 0e f2 6c | the Cache.0...l| 00008ad0 6f 61 64 63 61 63 68 65 0d 30 de 15 c8 99 22 48 |oadcache.0...."H| 00008ae0 6f 75 72 67 6c 61 73 73 5f 4f 66 66 22 0d 30 e8 |ourglass_Off".0.| 00008af0 05 e1 0d 30 f2 04 0d 30 fc 39 f4 20 2a 2a 2a 2a |...0...0.9. ****| 00008b00 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 00008b20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d |***************.| 00008b30 31 06 04 0d 31 10 15 dd f2 73 75 62 74 72 61 63 |1...1....subtrac| 00008b40 74 5f 77 69 6e 64 6f 77 0d 31 1a 31 58 25 3d 8e |t_window.1.1X%=.| 00008b50 28 53 74 61 72 74 50 61 74 68 24 2b 22 2e 55 73 |(StartPath$+".Us| 00008b60 65 72 73 2e 22 2b 55 73 65 72 24 2b 22 2e 7e 7e |ers."+User$+".~~| 00008b70 4f 70 65 6e 22 2b bd 30 29 0d 31 24 32 59 25 3d |Open"+.0).1$2Y%=| 00008b80 ae 28 53 74 61 72 74 50 61 74 68 24 2b 22 2e 55 |.(StartPath$+".U| 00008b90 73 65 72 73 2e 22 2b 55 73 65 72 24 2b 22 2e 74 |sers."+User$+".t| 00008ba0 6d 70 66 69 6c 65 22 2b bd 30 29 0d 31 2e 05 f5 |mpfile"+.0).1...| 00008bb0 0d 31 38 14 41 24 3d a4 67 65 74 5f 6c 69 6e 65 |.18.A$=.get_line| 00008bc0 28 58 25 29 0d 31 42 1b 70 61 74 68 5f 73 74 61 |(X%).1B.path_sta| 00008bd0 72 74 25 3d a7 41 24 2c 20 70 61 74 68 24 29 0d |rt%=.A$, path$).| 00008be0 31 4c 19 70 61 74 68 5f 6c 65 6e 67 74 68 25 3d |1L.path_length%=| 00008bf0 a9 28 70 61 74 68 24 29 0d 31 56 6b e7 20 28 a7 |.(path$).1Vk. (.| 00008c00 41 24 2c 20 22 46 69 6c 65 72 5f 4f 70 65 6e 44 |A$, "Filer_OpenD| 00008c10 69 72 22 29 3d 30 20 84 20 70 61 74 68 5f 73 74 |ir")=0 . path_st| 00008c20 61 72 74 25 3d 30 20 84 20 97 28 c1 41 24 2c 70 |art%=0 . .(.A$,p| 00008c30 61 74 68 5f 73 74 61 72 74 25 2b 70 61 74 68 5f |ath_start%+path_| 00008c40 6c 65 6e 67 74 68 25 2c 31 29 29 3e 33 32 29 20 |length%,1))>32) | 00008c50 8c 20 f2 70 75 74 5f 6c 69 6e 65 28 59 25 2c 20 |. .put_line(Y%, | 00008c60 41 24 29 0d 31 60 0a fd 20 c5 23 58 25 0d 31 6a |A$).1`.. .#X%.1j| 00008c70 08 d9 23 58 25 0d 31 74 08 d9 23 59 25 0d 31 7e |..#X%.1t..#Y%.1~| 00008c80 38 ff 28 22 44 65 6c 65 74 65 20 22 2b 53 74 61 |8.("Delete "+Sta| 00008c90 72 74 50 61 74 68 24 2b 22 2e 55 73 65 72 73 2e |rtPath$+".Users.| 00008ca0 22 2b 55 73 65 72 24 2b 22 2e 7e 7e 4f 70 65 6e |"+User$+".~~Open| 00008cb0 22 2b bd 30 29 0d 31 88 4f ff 28 22 52 65 6e 61 |"+.0).1.O.("Rena| 00008cc0 6d 65 20 22 2b 53 74 61 72 74 50 61 74 68 24 2b |me "+StartPath$+| 00008cd0 22 2e 74 6d 70 66 69 6c 65 20 22 2b 53 74 61 72 |".tmpfile "+Star| 00008ce0 74 50 61 74 68 24 2b 22 2e 55 73 65 72 73 2e 22 |tPath$+".Users."| 00008cf0 2b 55 73 65 72 24 2b 22 2e 7e 7e 4f 70 65 6e 22 |+User$+".~~Open"| 00008d00 2b bd 30 29 0d 31 92 04 0d 31 9c 32 58 25 3d 8e |+.0).1...1.2X%=.| 00008d10 28 53 74 61 72 74 50 61 74 68 24 2b 22 2e 55 73 |(StartPath$+".Us| 00008d20 65 72 73 2e 22 2b 55 73 65 72 24 2b 22 2e 7e 7e |ers."+User$+".~~| 00008d30 43 6c 6f 73 65 22 2b bd 30 29 0d 31 a6 22 59 25 |Close"+.0).1."Y%| 00008d40 3d ae 28 53 74 61 72 74 50 61 74 68 24 2b 22 2e |=.(StartPath$+".| 00008d50 74 6d 70 66 69 6c 65 22 2b bd 30 29 0d 31 b0 05 |tmpfile"+.0).1..| 00008d60 f5 0d 31 ba 14 41 24 3d a4 67 65 74 5f 6c 69 6e |..1..A$=.get_lin| 00008d70 65 28 58 25 29 0d 31 c4 1b 70 61 74 68 5f 73 74 |e(X%).1..path_st| 00008d80 61 72 74 25 3d a7 41 24 2c 20 70 61 74 68 24 29 |art%=.A$, path$)| 00008d90 0d 31 ce 19 70 61 74 68 5f 6c 65 6e 67 74 68 25 |.1..path_length%| 00008da0 3d a9 28 70 61 74 68 24 29 0d 31 d8 6c e7 20 28 |=.(path$).1.l. (| 00008db0 a7 41 24 2c 20 22 46 69 6c 65 72 5f 43 6c 6f 73 |.A$, "Filer_Clos| 00008dc0 65 44 69 72 22 29 3d 30 20 84 20 70 61 74 68 5f |eDir")=0 . path_| 00008dd0 73 74 61 72 74 25 3d 30 20 84 20 97 28 c1 41 24 |start%=0 . .(.A$| 00008de0 2c 70 61 74 68 5f 73 74 61 72 74 25 2b 70 61 74 |,path_start%+pat| 00008df0 68 5f 6c 65 6e 67 74 68 25 2c 31 29 29 3e 33 32 |h_length%,1))>32| 00008e00 29 20 8c 20 f2 70 75 74 5f 6c 69 6e 65 28 59 25 |) . .put_line(Y%| 00008e10 2c 20 41 24 29 0d 31 e2 0a fd 20 c5 23 58 25 0d |, A$).1... .#X%.| 00008e20 31 ec 08 d9 23 58 25 0d 31 f6 08 d9 23 59 25 0d |1...#X%.1...#Y%.| 00008e30 32 00 39 ff 28 22 44 65 6c 65 74 65 20 22 2b 53 |2.9.("Delete "+S| 00008e40 74 61 72 74 50 61 74 68 24 2b 22 2e 55 73 65 72 |tartPath$+".User| 00008e50 73 2e 22 2b 55 73 65 72 24 2b 22 2e 7e 7e 43 6c |s."+User$+".~~Cl| 00008e60 6f 73 65 22 2b bd 30 29 0d 32 0a 50 ff 28 22 52 |ose"+.0).2.P.("R| 00008e70 65 6e 61 6d 65 20 22 2b 53 74 61 72 74 50 61 74 |ename "+StartPat| 00008e80 68 24 2b 22 2e 74 6d 70 66 69 6c 65 20 22 2b 53 |h$+".tmpfile "+S| 00008e90 74 61 72 74 50 61 74 68 24 2b 22 2e 55 73 65 72 |tartPath$+".User| 00008ea0 73 2e 22 2b 55 73 65 72 24 2b 22 2e 7e 7e 43 6c |s."+User$+".~~Cl| 00008eb0 6f 73 65 22 2b bd 30 29 0d 32 14 1d f4 20 52 65 |ose"+.0).2... Re| 00008ec0 2d 69 6e 69 74 69 61 6c 69 73 65 20 74 68 65 20 |-initialise the | 00008ed0 43 61 63 68 65 0d 32 1e 0e f2 6c 6f 61 64 63 61 |Cache.2...loadca| 00008ee0 63 68 65 0d 32 28 15 c8 99 22 48 6f 75 72 67 6c |che.2(..."Hourgl| 00008ef0 61 73 73 5f 4f 66 66 22 0d 32 32 05 e1 0d 32 3c |ass_Off".22...2<| 00008f00 04 0d 32 46 39 f4 20 2a 2a 2a 2a 2a 2a 2a 2a 2a |..2F9. *********| 00008f10 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 00008f30 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d 32 50 39 f4 20 |**********.2P9. | 00008f40 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 00008f70 2a 2a 2a 0d 32 5a 39 f4 20 2a 2a 2a 2a 2a 2a 2a |***.2Z9. *******| 00008f80 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 00008fa0 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d 32 64 39 |************.2d9| 00008fb0 f4 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |. **************| 00008fc0 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 00008fe0 2a 2a 2a 2a 2a 0d 32 6e 04 0d 32 78 0a dd f2 69 |*****.2n..2x...i| 00008ff0 6e 69 74 0d 32 82 3d f4 20 44 6f 20 7e 7e 4f 70 |nit.2.=. Do ~~Op| 00009000 65 6e 20 61 6e 64 20 7e 7e 43 6c 6f 73 65 20 66 |en and ~~Close f| 00009010 69 6c 65 73 20 65 78 69 73 74 3f 20 49 66 20 6e |iles exist? If n| 00009020 6f 74 2c 20 63 72 65 61 74 65 20 65 6d 70 74 79 |ot, create empty| 00009030 0d 32 8c 30 f4 20 63 6f 70 69 65 73 20 6f 66 20 |.2.0. copies of | 00009040 74 68 65 6d 20 74 6f 20 70 72 65 76 65 6e 74 20 |them to prevent | 00009050 21 53 74 61 72 74 20 63 72 61 73 68 69 6e 67 2e |!Start crashing.| 00009060 0d 32 96 23 f2 65 6e 73 75 72 65 64 69 72 28 53 |.2.#.ensuredir(S| 00009070 74 61 72 74 50 61 74 68 24 2b 22 2e 55 73 65 72 |tartPath$+".User| 00009080 73 22 29 0d 32 a0 29 f2 65 6e 73 75 72 65 64 69 |s").2.).ensuredi| 00009090 72 28 53 74 61 72 74 50 61 74 68 24 2b 22 2e 55 |r(StartPath$+".U| 000090a0 73 65 72 73 2e 41 64 6d 69 6e 22 29 0d 32 aa 2f |sers.Admin").2./| 000090b0 f2 65 6e 73 75 72 65 64 69 72 28 53 74 61 72 74 |.ensuredir(Start| 000090c0 50 61 74 68 24 2b 22 2e 55 73 65 72 73 2e 41 64 |Path$+".Users.Ad| 000090d0 6d 69 6e 2e 4c 69 6e 6b 73 22 29 0d 32 b4 04 0d |min.Links").2...| 000090e0 32 be 31 24 73 74 72 69 6e 67 25 3d 53 74 61 72 |2.1$string%=Star| 000090f0 74 50 61 74 68 24 2b 22 2e 55 73 65 72 73 2e 22 |tPath$+".Users."| 00009100 2b 55 73 65 72 24 2b 22 2e 7e 7e 4f 70 65 6e 22 |+User$+".~~Open"| 00009110 0d 32 c8 24 c8 99 22 4f 53 5f 46 69 6c 65 22 2c |.2.$.."OS_File",| 00009120 31 37 2c 73 74 72 69 6e 67 25 20 b8 20 72 65 73 |17,string% . res| 00009130 75 6c 74 25 0d 32 d2 43 e7 20 28 72 65 73 75 6c |ult%.2.C. (resul| 00009140 74 25 3d 30 29 20 8c 20 58 25 3d ae 28 53 74 61 |t%=0) . X%=.(Sta| 00009150 72 74 50 61 74 68 24 2b 22 2e 55 73 65 72 73 2e |rtPath$+".Users.| 00009160 22 2b 55 73 65 72 24 2b 22 2e 7e 7e 4f 70 65 6e |"+User$+".~~Open| 00009170 22 29 3a d9 23 58 25 0d 32 dc 32 24 73 74 72 69 |"):.#X%.2.2$stri| 00009180 6e 67 25 3d 53 74 61 72 74 50 61 74 68 24 2b 22 |ng%=StartPath$+"| 00009190 2e 55 73 65 72 73 2e 22 2b 55 73 65 72 24 2b 22 |.Users."+User$+"| 000091a0 2e 7e 7e 43 6c 6f 73 65 22 0d 32 e6 24 c8 99 22 |.~~Close".2.$.."| 000091b0 4f 53 5f 46 69 6c 65 22 2c 31 37 2c 73 74 72 69 |OS_File",17,stri| 000091c0 6e 67 25 20 b8 20 72 65 73 75 6c 74 25 0d 32 f0 |ng% . result%.2.| 000091d0 44 e7 20 28 72 65 73 75 6c 74 25 3d 30 29 20 8c |D. (result%=0) .| 000091e0 20 58 25 3d ae 28 53 74 61 72 74 50 61 74 68 24 | X%=.(StartPath$| 000091f0 2b 22 2e 55 73 65 72 73 2e 22 2b 55 73 65 72 24 |+".Users."+User$| 00009200 2b 22 2e 7e 7e 43 6c 6f 73 65 22 29 3a d9 23 58 |+".~~Close"):.#X| 00009210 25 0d 32 fa 04 0d 33 04 50 c8 99 20 22 57 69 6d |%.2...3.P.. "Wim| 00009220 70 5f 49 6e 69 74 69 61 6c 69 73 65 22 2c 32 30 |p_Initialise",20| 00009230 30 2c 26 34 42 35 33 34 31 35 34 2c 61 70 70 24 |0,&4B534154,app$| 00009240 20 b8 20 63 75 72 72 65 6e 74 5f 77 69 6d 70 5f | . current_wimp_| 00009250 76 65 72 73 69 6f 6e 25 2c 74 61 73 6b 5f 68 61 |version%,task_ha| 00009260 6e 64 6c 65 25 0d 33 0e 04 0d 33 18 32 c8 99 22 |ndle%.3...3.2.."| 00009270 57 69 6d 70 5f 4f 70 65 6e 54 65 6d 70 6c 61 74 |Wimp_OpenTemplat| 00009280 65 22 2c 2c 53 74 61 72 74 50 61 74 68 24 2b 22 |e",,StartPath$+"| 00009290 2e 54 65 6d 70 6c 61 74 65 73 22 0d 33 22 13 24 |.Templates".3".$| 000092a0 73 74 72 69 6e 67 25 3d 22 49 6e 66 6f 22 0d 33 |string%="Info".3| 000092b0 2c 47 c8 99 22 57 69 6d 70 5f 4c 6f 61 64 54 65 |,G.."Wimp_LoadTe| 000092c0 6d 70 6c 61 74 65 22 2c 2c 62 6c 6f 63 6b 25 2c |mplate",,block%,| 000092d0 69 6e 66 6f 64 61 74 61 25 2c 69 6e 66 6f 64 61 |infodata%,infoda| 000092e0 74 61 25 2b 32 30 34 38 2c 2d 31 2c 73 74 72 69 |ta%+2048,-1,stri| 000092f0 6e 67 25 2c 30 0d 33 36 31 c8 99 22 57 69 6d 70 |ng%,0.361.."Wimp| 00009300 5f 43 72 65 61 74 65 57 69 6e 64 6f 77 22 2c 2c |_CreateWindow",,| 00009310 62 6c 6f 63 6b 25 20 b8 20 77 68 61 6e 64 6c 65 |block% . whandle| 00009320 5f 69 6e 66 6f 25 0d 33 40 1a c8 99 22 57 69 6d |_info%.3@..."Wim| 00009330 70 5f 43 6c 6f 73 65 54 65 6d 70 6c 61 74 65 22 |p_CloseTemplate"| 00009340 0d 33 4a 04 0d 33 54 0a f7 20 8d 64 56 73 0d 33 |.3J..3T.. .dVs.3| 00009350 5e 1a f2 73 65 74 75 70 6d 65 6e 75 28 6d 61 69 |^..setupmenu(mai| 00009360 6e 5f 6d 65 6e 75 25 29 0d 33 68 04 0d 33 72 3d |n_menu%).3h..3r=| 00009370 f4 20 49 6e 73 74 61 6c 6c 20 61 6e 20 69 63 6f |. Install an ico| 00009380 6e 20 6f 6e 20 74 68 65 20 69 63 6f 6e 20 62 61 |n on the icon ba| 00009390 72 20 75 73 69 6e 67 20 74 68 65 20 73 68 6f 72 |r using the shor| 000093a0 74 63 75 74 20 69 63 6f 6e 0d 33 7c 61 69 63 6f |tcut icon.3|aico| 000093b0 6e 62 61 72 68 61 6e 64 6c 65 25 3d a4 63 72 65 |nbarhandle%=.cre| 000093c0 61 74 65 5f 69 63 6f 6e 28 2d 32 2c 30 2c 2d 31 |ate_icon(-2,0,-1| 000093d0 36 2c 38 34 2c 31 30 36 2c 26 31 37 30 30 33 31 |6,84,106,&170031| 000093e0 30 42 2c 22 21 73 74 61 72 74 22 2c 69 63 6f 6e |0B,"!start",icon| 000093f0 62 61 72 6c 61 62 65 6c 25 2c 69 63 6f 6e 62 61 |barlabel%,iconba| 00009400 72 64 61 74 61 25 2c 33 32 29 0d 33 86 04 0d 33 |rdata%,32).3...3| 00009410 90 05 e1 0d 33 9a 04 0d 33 a4 39 f4 20 2a 2a 2a |....3...3.9. ***| 00009420 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 00009450 0d 33 ae 39 f4 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |.3.9. **********| 00009460 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 00009480 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d 33 b8 39 f4 20 2a |*********.3.9. *| 00009490 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 000094c0 2a 2a 0d 33 c2 39 f4 20 2a 2a 2a 2a 2a 2a 2a 2a |**.3.9. ********| 000094d0 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 000094f0 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d 33 cc 04 0d |***********.3...| 00009500 33 d6 0f dc 20 22 53 74 61 72 74 22 2c 35 0d 33 |3... "Start",5.3| 00009510 e0 1c dc 20 30 2c 77 68 61 6e 64 6c 65 5f 69 6e |... 0,whandle_in| 00009520 66 6f 25 2c 22 49 6e 66 6f 22 0d 33 ea 17 dc 20 |fo%,"Info".3... | 00009530 30 2c 2d 31 2c 22 43 6c 65 61 6e 20 44 65 73 6b |0,-1,"Clean Desk| 00009540 22 0d 33 f4 18 dc 20 30 2c 2d 31 2c 22 4e 6f 48 |".3... 0,-1,"NoH| 00009550 6f 75 72 67 6c 61 73 73 22 0d 33 fe 17 dc 20 30 |ourglass".3... 0| 00009560 2c 2d 31 2c 22 45 64 69 74 20 4c 69 6e 6b 73 22 |,-1,"Edit Links"| 00009570 0d 34 08 13 dc 20 26 38 30 2c 2d 31 2c 22 51 75 |.4... &80,-1,"Qu| 00009580 69 74 22 0d 34 12 04 0d 34 1c 3f f4 20 2a 2a 2a |it".4...4.?. ***| 00009590 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 000095c0 2a 2a 2a 2a 2a 2a 0d 34 26 04 0d 34 30 3c f4 20 |******.4&..40<. | 000095d0 66 75 6e 63 74 69 6f 6e 20 74 6f 20 69 6e 66 6f |function to info| 000095e0 72 6d 20 74 68 65 20 77 69 6d 70 20 6f 66 20 74 |rm the wimp of t| 000095f0 68 65 20 70 72 65 73 65 6e 63 65 20 6f 66 20 61 |he presence of a| 00009600 6e 20 69 63 6f 6e 0d 34 3a 46 dd a4 63 72 65 61 |n icon.4:F..crea| 00009610 74 65 5f 69 63 6f 6e 28 77 68 61 6e 25 2c 69 78 |te_icon(whan%,ix| 00009620 25 2c 69 79 25 2c 69 77 25 2c 69 68 25 2c 66 6c |%,iy%,iw%,ih%,fl| 00009630 61 67 25 2c 74 65 78 74 24 2c 70 74 72 31 25 2c |ag%,text$,ptr1%,| 00009640 70 74 72 32 25 2c 70 74 72 33 25 29 0d 34 44 11 |ptr2%,ptr3%).4D.| 00009650 21 62 6c 6f 63 6b 25 3d 77 68 61 6e 25 0d 34 4e |!block%=whan%.4N| 00009660 10 62 6c 6f 63 6b 25 21 34 3d 69 78 25 0d 34 58 |.block%!4=ix%.4X| 00009670 10 62 6c 6f 63 6b 25 21 38 3d 69 79 25 0d 34 62 |.block%!8=iy%.4b| 00009680 15 62 6c 6f 63 6b 25 21 31 32 3d 69 78 25 2b 69 |.block%!12=ix%+i| 00009690 77 25 0d 34 6c 15 62 6c 6f 63 6b 25 21 31 36 3d |w%.4l.block%!16=| 000096a0 69 79 25 2b 69 68 25 0d 34 76 13 62 6c 6f 63 6b |iy%+ih%.4v.block| 000096b0 25 21 32 30 3d 66 6c 61 67 25 0d 34 80 0f e7 20 |%!20=flag%.4... | 000096c0 70 74 72 31 25 3d 30 20 8c 0d 34 8a 16 24 28 62 |ptr1%=0 ..4..$(b| 000096d0 6c 6f 63 6b 25 2b 32 34 29 3d 74 65 78 74 24 0d |lock%+24)=text$.| 000096e0 34 94 05 cc 0d 34 9e 13 62 6c 6f 63 6b 25 21 32 |4....4..block%!2| 000096f0 34 3d 70 74 72 31 25 0d 34 a8 13 62 6c 6f 63 6b |4=ptr1%.4..block| 00009700 25 21 32 38 3d 70 74 72 32 25 0d 34 b2 13 62 6c |%!28=ptr2%.4..bl| 00009710 6f 63 6b 25 21 33 32 3d 70 74 72 33 25 0d 34 bc |ock%!32=ptr3%.4.| 00009720 05 cd 0d 34 c6 2a c8 99 22 57 69 6d 70 5f 43 72 |...4.*.."Wimp_Cr| 00009730 65 61 74 65 49 63 6f 6e 22 2c 2c 62 6c 6f 63 6b |eateIcon",,block| 00009740 25 20 b8 20 69 68 61 6e 64 6c 65 25 0d 34 d0 0d |% . ihandle%.4..| 00009750 3d 69 68 61 6e 64 6c 65 25 0d 34 da 04 0d 34 e4 |=ihandle%.4...4.| 00009760 3e f4 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |>. *************| 00009770 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 00009790 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d 34 ee 04 0d |***********.4...| 000097a0 34 f8 2b f4 20 47 65 6e 65 72 61 6c 20 6d 6f 75 |4.+. General mou| 000097b0 73 65 20 63 6c 69 63 6b 20 68 61 6e 64 6c 69 6e |se click handlin| 000097c0 67 20 72 6f 75 74 69 6e 65 2e 0d 35 02 44 f4 20 |g routine..5.D. | 000097d0 4e 6f 74 65 20 74 6f 20 70 65 6f 70 6c 65 20 77 |Note to people w| 000097e0 68 6f 20 64 6f 6e 27 74 20 72 65 61 6c 6c 79 20 |ho don't really | 000097f0 68 61 76 65 20 61 20 63 6c 75 65 20 61 62 6f 75 |have a clue abou| 00009800 74 20 57 49 4d 50 20 73 79 73 74 65 6d 3a 0d 35 |t WIMP system:.5| 00009810 0c 3d f4 20 41 6c 6c 20 63 6c 69 63 6b 69 6e 67 |.=. All clicking| 00009820 73 20 6f 6e 20 6d 65 6e 75 73 20 77 69 6c 6c 20 |s on menus will | 00009830 6e 65 76 65 72 20 72 65 61 63 68 20 74 68 69 73 |never reach this| 00009840 20 70 72 6f 63 65 64 75 72 65 2c 0d 35 16 3a f4 | procedure,.5.:.| 00009850 20 69 74 20 64 65 61 6c 73 20 77 69 74 68 20 61 | it deals with a| 00009860 6c 6c 20 63 6c 69 63 6b 73 20 6f 6e 20 77 69 6e |ll clicks on win| 00009870 64 6f 77 73 20 61 6e 64 20 74 68 65 20 69 63 6f |dows and the ico| 00009880 6e 62 61 72 2e 0d 35 20 11 dd f2 63 6c 69 63 6b |nbar..5 ...click| 00009890 28 77 69 6e 25 29 0d 35 2a 0d c8 8e 20 77 69 6e |(win%).5*... win| 000098a0 25 20 ca 0d 35 34 21 c9 20 2d 32 3a f2 63 6c 69 |% ..54!. -2:.cli| 000098b0 63 6b 5f 69 63 6f 6e 62 61 72 28 62 6c 6f 63 6b |ck_iconbar(block| 000098c0 25 21 38 29 0d 35 3e 29 c9 20 77 68 61 6e 64 6c |%!8).5>). whandl| 000098d0 65 5f 69 6e 66 6f 25 3a f2 63 6c 69 63 6b 5f 69 |e_info%:.click_i| 000098e0 6e 66 6f 28 62 6c 6f 63 6b 25 21 38 29 0d 35 48 |nfo(block%!8).5H| 000098f0 05 cb 0d 35 52 05 e1 0d 35 5c 04 0d 35 66 1c dd |...5R...5\..5f..| 00009900 f2 63 6c 69 63 6b 5f 69 63 6f 6e 62 61 72 28 62 |.click_iconbar(b| 00009910 75 74 74 6f 6e 25 29 0d 35 70 10 c8 8e 20 62 75 |utton%).5p... bu| 00009920 74 74 6f 6e 25 20 ca 0d 35 7a 19 c9 20 30 3a f2 |tton% ..5z.. 0:.| 00009930 6d 6f 76 65 5f 6f 76 65 72 69 63 6f 6e 62 61 72 |move_overiconbar| 00009940 0d 35 84 1c c9 20 31 3a f2 63 6c 69 63 6b 5f 69 |.5... 1:.click_i| 00009950 63 6f 6e 62 61 72 61 64 6a 75 73 74 0d 35 8e 1a |conbaradjust.5..| 00009960 c9 20 32 3a f2 63 6c 69 63 6b 5f 69 63 6f 6e 62 |. 2:.click_iconb| 00009970 61 72 6d 65 6e 75 0d 35 98 1c c9 20 34 3a f2 63 |armenu.5... 4:.c| 00009980 6c 69 63 6b 5f 69 63 6f 6e 62 61 72 73 65 6c 65 |lick_iconbarsele| 00009990 63 74 0d 35 a2 05 cb 0d 35 ac 05 e1 0d 35 b6 04 |ct.5....5....5..| 000099a0 0d 35 c0 16 dd f2 6d 6f 76 65 5f 6f 76 65 72 69 |.5....move_overi| 000099b0 63 6f 6e 62 61 72 0d 35 ca 2d e7 20 49 63 6f 6e |conbar.5.-. Icon| 000099c0 42 61 72 4d 65 6e 75 4f 70 65 6e 25 3d 31 20 69 |BarMenuOpen%=1 i| 000099d0 63 6f 6e 62 61 72 5f 74 69 6d 65 72 66 6c 61 67 |conbar_timerflag| 000099e0 25 3d 30 0d 35 d4 3b f4 20 49 73 20 70 6f 69 6e |%=0.5.;. Is poin| 000099f0 74 65 72 20 6f 76 65 72 20 69 63 6f 6e 62 61 72 |ter over iconbar| 00009a00 20 69 63 6f 6e 3f 20 49 66 20 73 6f 20 69 6e 63 | icon? If so inc| 00009a10 20 69 63 6f 6e 62 61 72 5f 74 69 6d 65 72 0d 35 | iconbar_timer.5| 00009a20 de 58 e7 20 28 69 63 6f 6e 62 61 72 5f 74 69 6d |.X. (iconbar_tim| 00009a30 65 72 66 6c 61 67 25 3d 30 20 80 20 49 63 6f 6e |erflag%=0 . Icon| 00009a40 42 61 72 4d 65 6e 75 4f 70 65 6e 25 3c 3e 31 29 |BarMenuOpen%<>1)| 00009a50 20 69 63 6f 6e 62 61 72 5f 74 69 6d 65 72 66 6c | iconbar_timerfl| 00009a60 61 67 25 3d 31 3a 69 63 6f 6e 62 61 72 5f 74 69 |ag%=1:iconbar_ti| 00009a70 6d 65 72 25 3d 91 0d 35 e8 6c e7 20 28 28 28 91 |mer%=..5.l. (((.| 00009a80 2d 69 63 6f 6e 62 61 72 5f 74 69 6d 65 72 25 29 |-iconbar_timer%)| 00009a90 3e 32 35 29 20 80 20 69 63 6f 6e 62 61 72 5f 74 |>25) . iconbar_t| 00009aa0 69 6d 65 72 66 6c 61 67 25 3d 31 20 80 20 4f 6c |imerflag%=1 . Ol| 00009ab0 64 54 6f 6f 6c 54 69 70 25 3c 3e 31 29 20 f2 4f |dToolTip%<>1) .O| 00009ac0 70 65 6e 54 6f 6f 6c 54 69 70 28 31 29 3a 69 63 |penToolTip(1):ic| 00009ad0 6f 6e 62 61 72 5f 74 69 6d 65 72 66 6c 61 67 25 |onbar_timerflag%| 00009ae0 3d 32 0d 35 f2 57 e7 20 28 28 28 91 2d 69 63 6f |=2.5.W. (((.-ico| 00009af0 6e 62 61 72 5f 74 69 6d 65 72 25 29 3e 34 30 30 |nbar_timer%)>400| 00009b00 29 20 80 20 54 6f 6f 6c 54 69 70 25 3e 30 29 20 |) . ToolTip%>0) | 00009b10 f2 50 65 72 73 69 73 74 43 6c 6f 73 65 54 6f 6f |.PersistCloseToo| 00009b20 6c 54 69 70 3a 69 63 6f 6e 62 61 72 5f 74 69 6d |lTip:iconbar_tim| 00009b30 65 72 66 6c 61 67 25 3d 30 0d 35 fc 05 e1 0d 36 |erflag%=0.5....6| 00009b40 06 04 0d 36 10 1a dd f2 63 6c 69 63 6b 5f 69 63 |...6....click_ic| 00009b50 6f 6e 62 61 72 67 65 6e 65 72 61 6c 0d 36 1a 25 |onbargeneral.6.%| 00009b60 e7 20 54 6f 6f 6c 54 69 70 25 3d 31 20 f2 50 65 |. ToolTip%=1 .Pe| 00009b70 72 73 69 73 74 43 6c 6f 73 65 54 6f 6f 6c 54 69 |rsistCloseToolTi| 00009b80 70 0d 36 24 23 c8 99 22 57 69 6d 70 5f 47 65 74 |p.6$#.."Wimp_Get| 00009b90 50 6f 69 6e 74 65 72 49 6e 66 6f 22 2c 2c 62 6c |PointerInfo",,bl| 00009ba0 6f 63 6b 25 0d 36 2e 17 6f 76 65 72 72 69 64 65 |ock%.6..override| 00009bb0 5f 74 6f 6f 6c 74 69 70 25 3d 31 0d 36 38 3b 49 |_tooltip%=1.68;I| 00009bc0 63 6f 6e 42 61 72 4d 65 6e 75 4f 70 65 6e 25 3d |conBarMenuOpen%=| 00009bd0 31 3a f4 20 49 6e 68 69 62 69 74 20 74 6f 6f 6c |1:. Inhibit tool| 00009be0 20 74 69 70 20 64 69 73 70 6c 61 79 20 6f 76 65 | tip display ove| 00009bf0 72 20 6d 65 6e 75 0d 36 42 0d e7 20 28 a6 2d 31 |r menu.6B.. (.-1| 00009c00 29 20 8c 0d 36 4c 2f f2 73 68 6f 77 6d 65 6e 75 |) ..6L/.showmenu| 00009c10 28 6d 61 69 6e 5f 6d 65 6e 75 25 2c 21 62 6c 6f |(main_menu%,!blo| 00009c20 63 6b 25 2d 36 34 2c 20 39 36 2b 28 35 2a 34 34 |ck%-64, 96+(5*44| 00009c30 29 29 0d 36 56 05 cc 0d 36 60 18 f2 73 68 6f 77 |)).6V...6`..show| 00009c40 73 68 6f 72 74 63 75 74 6d 65 6e 75 28 30 29 0d |shortcutmenu(0).| 00009c50 36 6a 05 cd 0d 36 74 05 e1 0d 36 7e 04 0d 36 88 |6j...6t...6~..6.| 00009c60 17 dd f2 63 6c 69 63 6b 5f 69 63 6f 6e 62 61 72 |...click_iconbar| 00009c70 6d 65 6e 75 0d 36 92 19 f2 63 6c 69 63 6b 5f 69 |menu.6...click_i| 00009c80 63 6f 6e 62 61 72 67 65 6e 65 72 61 6c 0d 36 9c |conbargeneral.6.| 00009c90 05 e1 0d 36 a6 04 0d 36 b0 19 dd f2 63 6c 69 63 |...6...6....clic| 00009ca0 6b 5f 69 63 6f 6e 62 61 72 73 65 6c 65 63 74 0d |k_iconbarselect.| 00009cb0 36 ba 15 e7 20 28 a6 2d 31 29 20 80 20 28 a6 2d |6... (.-1) . (.-| 00009cc0 32 29 20 8c 0d 36 c4 18 f4 20 4f 70 65 6e 20 63 |2) ..6... Open c| 00009cd0 61 63 68 65 20 77 69 6e 64 6f 77 73 0d 36 ce 10 |ache windows.6..| 00009ce0 f2 72 65 6f 70 65 6e 66 69 6c 65 72 0d 36 d8 05 |.reopenfiler.6..| 00009cf0 e1 0d 36 e2 05 cd 0d 36 ec 04 0d 36 f6 0d e7 20 |..6....6...6... | 00009d00 28 a6 2d 32 29 20 8c 0d 37 00 20 f4 20 53 74 61 |(.-2) ..7. . Sta| 00009d10 72 74 20 64 72 61 67 20 74 6f 20 61 64 64 20 61 |rt drag to add a| 00009d20 20 77 69 6e 64 6f 77 0d 37 0a 23 c8 99 22 57 69 | window.7.#.."Wi| 00009d30 6d 70 5f 47 65 74 50 6f 69 6e 74 65 72 49 6e 66 |mp_GetPointerInf| 00009d40 6f 22 2c 2c 62 6c 6f 63 6b 25 0d 37 14 28 e7 20 |o",,block%.7.(. | 00009d50 28 62 6c 6f 63 6b 25 21 38 29 20 f2 69 6e 69 74 |(block%!8) .init| 00009d60 5f 64 72 61 67 28 61 64 64 5f 77 69 6e 64 6f 77 |_drag(add_window| 00009d70 25 29 0d 37 1e 05 cc 0d 37 28 10 f4 20 43 6c 69 |%).7....7(.. Cli| 00009d80 63 6b 20 6d 65 6e 75 0d 37 32 19 f2 63 6c 69 63 |ck menu.72..clic| 00009d90 6b 5f 69 63 6f 6e 62 61 72 67 65 6e 65 72 61 6c |k_iconbargeneral| 00009da0 0d 37 3c 05 cd 0d 37 46 05 e1 0d 37 50 04 0d 37 |.7<...7F...7P..7| 00009db0 5a 19 dd f2 63 6c 69 63 6b 5f 69 63 6f 6e 62 61 |Z...click_iconba| 00009dc0 72 61 64 6a 75 73 74 0d 37 64 15 e7 20 28 a6 2d |radjust.7d.. (.-| 00009dd0 31 29 20 80 20 28 a6 2d 32 29 20 8c 0d 37 6e 19 |1) . (.-2) ..7n.| 00009de0 f4 20 43 6c 6f 73 65 20 63 61 63 68 65 20 77 69 |. Close cache wi| 00009df0 6e 64 6f 77 73 0d 37 78 1d f2 63 6c 6f 73 65 66 |ndows.7x..closef| 00009e00 69 6c 65 72 3a f2 43 6c 6f 73 65 49 6e 66 6f 42 |iler:.CloseInfoB| 00009e10 6f 78 0d 37 82 05 e1 0d 37 8c 05 cd 0d 37 96 0d |ox.7....7....7..| 00009e20 e7 20 28 a6 2d 32 29 20 8c 0d 37 a0 23 c8 99 22 |. (.-2) ..7.#.."| 00009e30 57 69 6d 70 5f 47 65 74 50 6f 69 6e 74 65 72 49 |Wimp_GetPointerI| 00009e40 6e 66 6f 22 2c 2c 62 6c 6f 63 6b 25 0d 37 aa 23 |nfo",,block%.7.#| 00009e50 f4 20 53 74 61 72 74 20 64 72 61 67 20 74 6f 20 |. Start drag to | 00009e60 72 65 6d 6f 76 65 20 61 20 77 69 6e 64 6f 77 0d |remove a window.| 00009e70 37 b4 2d e7 20 28 62 6c 6f 63 6b 25 21 38 29 20 |7.-. (block%!8) | 00009e80 f2 69 6e 69 74 5f 64 72 61 67 28 73 75 62 74 72 |.init_drag(subtr| 00009e90 61 63 74 5f 77 69 6e 64 6f 77 25 29 0d 37 be 05 |act_window%).7..| 00009ea0 cc 0d 37 c8 19 f2 63 6c 69 63 6b 5f 69 63 6f 6e |..7...click_icon| 00009eb0 62 61 72 67 65 6e 65 72 61 6c 0d 37 d2 05 cd 0d |bargeneral.7....| 00009ec0 37 dc 05 e1 0d 37 e6 04 0d 37 f0 19 dd a4 43 68 |7....7...7....Ch| 00009ed0 65 63 6b 4c 69 6e 6b 73 44 69 72 45 78 69 73 74 |eckLinksDirExist| 00009ee0 73 0d 37 fa 12 ea 20 64 69 72 24 2c 72 65 73 75 |s.7... dir$,resu| 00009ef0 6c 74 25 0d 38 04 2c 64 69 72 24 3d 53 74 61 72 |lt%.8.,dir$=Star| 00009f00 74 50 61 74 68 24 2b 22 2e 55 73 65 72 73 2e 22 |tPath$+".Users."| 00009f10 2b 55 73 65 72 24 2b 22 2e 4c 69 6e 6b 73 22 0d |+User$+".Links".| 00009f20 38 0e 25 f4 20 44 6f 65 73 20 74 68 65 20 4c 69 |8.%. Does the Li| 00009f30 6e 6b 73 20 64 69 72 65 63 74 6f 72 79 20 65 78 |nks directory ex| 00009f40 69 73 74 3f 0d 38 18 14 24 73 74 72 69 6e 67 25 |ist?.8..$string%| 00009f50 3d 64 69 72 24 2b bd 30 0d 38 22 24 c8 99 22 4f |=dir$+.0.8"$.."O| 00009f60 53 5f 46 69 6c 65 22 2c 31 37 2c 73 74 72 69 6e |S_File",17,strin| 00009f70 67 25 20 b8 20 72 65 73 75 6c 74 25 0d 38 2c 19 |g% . result%.8,.| 00009f80 f4 20 49 66 20 6e 6f 74 2c 20 63 72 65 61 74 65 |. If not, create| 00009f90 20 6f 6e 65 2e 0d 38 36 26 e7 20 28 72 65 73 75 | one..86&. (resu| 00009fa0 6c 74 25 3d 30 29 20 8c 20 ff 28 22 43 44 49 52 |lt%=0) . .("CDIR| 00009fb0 20 22 2b 64 69 72 24 2b bd 30 29 0d 38 40 24 c8 | "+dir$+.0).8@$.| 00009fc0 99 22 4f 53 5f 46 69 6c 65 22 2c 31 37 2c 73 74 |."OS_File",17,st| 00009fd0 72 69 6e 67 25 20 b8 20 72 65 73 75 6c 74 25 0d |ring% . result%.| 00009fe0 38 4a 27 f4 20 48 61 73 20 69 74 20 63 72 65 61 |8J'. Has it crea| 00009ff0 74 65 64 20 69 74 3f 20 49 66 20 6e 6f 74 2c 20 |ted it? If not, | 0000a000 65 72 72 6f 72 2e 0d 38 54 13 e7 20 28 72 65 73 |error..8T.. (res| 0000a010 75 6c 74 25 3d 30 29 20 8c 0d 38 5e 2e f2 65 72 |ult%=0) ..8^..er| 0000a020 72 6f 72 28 22 46 61 74 61 6c 20 3a 20 43 6f 75 |ror("Fatal : Cou| 0000a030 6c 64 6e 27 74 20 63 72 65 61 74 65 20 22 2b 64 |ldn't create "+d| 0000a040 69 72 24 2b bd 30 29 0d 38 68 06 3d 30 0d 38 72 |ir$+.0).8h.=0.8r| 0000a050 05 cd 0d 38 7c 06 3d 31 0d 38 86 04 0d 38 90 16 |...8|.=1.8...8..| 0000a060 dd f2 65 6e 73 75 72 65 64 69 72 28 65 64 69 72 |..ensuredir(edir| 0000a070 24 29 0d 38 9a 0d ea 20 72 65 73 75 6c 74 25 0d |$).8... result%.| 0000a080 38 a4 1f f4 20 44 6f 65 73 20 74 68 65 20 64 69 |8... Does the di| 0000a090 72 65 63 74 6f 72 79 20 65 78 69 73 74 3f 0d 38 |rectory exist?.8| 0000a0a0 ae 15 24 73 74 72 69 6e 67 25 3d 65 64 69 72 24 |..$string%=edir$| 0000a0b0 2b bd 30 0d 38 b8 24 c8 99 22 4f 53 5f 46 69 6c |+.0.8.$.."OS_Fil| 0000a0c0 65 22 2c 31 37 2c 73 74 72 69 6e 67 25 20 b8 20 |e",17,string% . | 0000a0d0 72 65 73 75 6c 74 25 0d 38 c2 19 f4 20 49 66 20 |result%.8... If | 0000a0e0 6e 6f 74 2c 20 63 72 65 61 74 65 20 6f 6e 65 2e |not, create one.| 0000a0f0 0d 38 cc 27 e7 20 28 72 65 73 75 6c 74 25 3d 30 |.8.'. (result%=0| 0000a100 29 20 8c 20 ff 28 22 43 44 49 52 20 22 2b 65 64 |) . .("CDIR "+ed| 0000a110 69 72 24 2b bd 30 29 0d 38 d6 24 c8 99 22 4f 53 |ir$+.0).8.$.."OS| 0000a120 5f 46 69 6c 65 22 2c 31 37 2c 73 74 72 69 6e 67 |_File",17,string| 0000a130 25 20 b8 20 72 65 73 75 6c 74 25 0d 38 e0 27 f4 |% . result%.8.'.| 0000a140 20 48 61 73 20 69 74 20 63 72 65 61 74 65 64 20 | Has it created | 0000a150 69 74 3f 20 49 66 20 6e 6f 74 2c 20 65 72 72 6f |it? If not, erro| 0000a160 72 2e 0d 38 ea 13 e7 20 28 72 65 73 75 6c 74 25 |r..8... (result%| 0000a170 3d 30 29 20 8c 0d 38 f4 2f f2 65 72 72 6f 72 28 |=0) ..8./.error(| 0000a180 22 46 61 74 61 6c 20 3a 20 43 6f 75 6c 64 6e 27 |"Fatal : Couldn'| 0000a190 74 20 63 72 65 61 74 65 20 22 2b 65 64 69 72 24 |t create "+edir$| 0000a1a0 2b bd 30 29 0d 38 fe 08 f4 20 3d 30 0d 39 08 05 |+.0).8... =0.9..| 0000a1b0 cd 0d 39 12 07 f4 3d 31 0d 39 1c 05 e1 0d 39 26 |..9...=1.9....9&| 0000a1c0 04 0d 39 30 38 f4 20 2a 2a 2a 2a 2a 2a 2a 2a 2a |..908. *********| 0000a1d0 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 0000a1f0 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d 39 3a 25 f4 20 53 |*********.9:%. S| 0000a200 74 61 72 74 20 62 75 69 6c 64 69 6e 67 20 74 68 |tart building th| 0000a210 65 20 73 68 6f 72 74 63 75 74 6d 65 6e 75 0d 39 |e shortcutmenu.9| 0000a220 44 38 f4 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |D8. ************| 0000a230 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 0000a250 2a 2a 2a 2a 2a 2a 0d 39 4e 1c dd f2 73 68 6f 77 |******.9N...show| 0000a260 73 68 6f 72 74 63 75 74 6d 65 6e 75 28 61 72 67 |shortcutmenu(arg| 0000a270 25 29 0d 39 58 27 e7 20 28 54 6f 6f 6c 54 69 70 |%).9X'. (ToolTip| 0000a280 25 3d 31 29 20 f2 50 65 72 73 69 73 74 43 6c 6f |%=1) .PersistClo| 0000a290 73 65 54 6f 6f 6c 54 69 70 0d 39 62 11 61 64 64 |seToolTip.9b.add| 0000a2a0 6c 69 6e 6b 25 3d 61 72 67 25 0d 39 6c 20 e7 20 |link%=arg%.9l . | 0000a2b0 28 a4 43 68 65 63 6b 4c 69 6e 6b 73 44 69 72 45 |(.CheckLinksDirE| 0000a2c0 78 69 73 74 73 3d 30 29 20 e1 0d 39 76 1c 64 69 |xists=0) ..9v.di| 0000a2d0 72 70 74 72 25 28 30 29 3d 73 68 6f 72 74 63 75 |rptr%(0)=shortcu| 0000a2e0 74 6d 65 6e 75 25 0d 39 80 27 f4 20 6c 69 6e 6b |tmenu%.9.'. link| 0000a2f0 6d 65 6e 75 64 65 70 74 68 25 3d 30 3a 52 45 4d |menudepth%=0:REM| 0000a300 20 41 74 20 74 6f 70 20 6c 65 76 65 6c 0d 39 8a | At top level.9.| 0000a310 04 0d 39 94 49 f2 53 69 6e 67 6c 65 44 69 72 65 |..9.I.SingleDire| 0000a320 63 74 6f 72 79 52 65 61 64 28 53 74 61 72 74 50 |ctoryRead(StartP| 0000a330 61 74 68 24 2b 22 2e 55 73 65 72 73 2e 22 2b 55 |ath$+".Users."+U| 0000a340 73 65 72 24 2b 22 2e 4c 69 6e 6b 73 22 2c 20 22 |ser$+".Links", "| 0000a350 53 74 61 72 74 22 2c 20 30 29 0d 39 9e 20 69 6e |Start", 0).9. in| 0000a360 69 74 69 61 6c 6d 65 6e 75 73 69 7a 65 25 3d 64 |itialmenusize%=d| 0000a370 69 72 6c 69 73 74 25 28 30 29 0d 39 a8 2b e7 20 |irlist%(0).9.+. | 0000a380 69 6e 69 74 69 61 6c 6d 65 6e 75 73 69 7a 65 25 |initialmenusize%| 0000a390 3d 30 20 69 6e 69 74 69 61 6c 6d 65 6e 75 73 69 |=0 initialmenusi| 0000a3a0 7a 65 25 3d 31 0d 39 b2 23 c8 99 22 57 69 6d 70 |ze%=1.9.#.."Wimp| 0000a3b0 5f 47 65 74 50 6f 69 6e 74 65 72 49 6e 66 6f 22 |_GetPointerInfo"| 0000a3c0 2c 2c 62 6c 6f 63 6b 25 0d 39 bc 43 f2 73 68 6f |,,block%.9.C.sho| 0000a3d0 77 6d 65 6e 75 28 73 68 6f 72 74 63 75 74 6d 65 |wmenu(shortcutme| 0000a3e0 6e 75 25 2c 21 62 6c 6f 63 6b 25 2d 36 34 2c 20 |nu%,!block%-64, | 0000a3f0 39 36 2b 28 28 69 6e 69 74 69 61 6c 6d 65 6e 75 |96+((initialmenu| 0000a400 73 69 7a 65 25 29 2a 34 34 29 29 0d 39 c6 05 e1 |size%)*44)).9...| 0000a410 0d 39 d0 04 0d 39 da 04 0d 39 e4 04 0d 39 ee 3b |.9...9...9...9.;| 0000a420 f4 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |. **************| 0000a430 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 0000a450 2a 2a 2a 2a 2a 2a 2a 0d 39 f8 3b f4 20 52 65 61 |*******.9.;. Rea| 0000a460 64 20 63 6f 6e 74 65 6e 74 73 20 6f 66 20 61 20 |d contents of a | 0000a470 64 69 72 65 63 74 6f 72 79 20 69 6e 74 6f 20 74 |directory into t| 0000a480 68 65 20 6d 65 6e 75 20 64 61 74 61 20 61 72 65 |he menu data are| 0000a490 61 73 0d 3a 02 3b f4 20 2a 2a 2a 2a 2a 2a 2a 2a |as.:.;. ********| 0000a4a0 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 0000a4c0 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d 3a 0c |*************.:.| 0000a4d0 3c dd f2 53 69 6e 67 6c 65 44 69 72 65 63 74 6f |<..SingleDirecto| 0000a4e0 72 79 52 65 61 64 28 6c 6f 63 61 6c 64 69 72 24 |ryRead(localdir$| 0000a4f0 2c 64 69 72 66 69 6c 65 6e 61 6d 65 24 2c 6c 69 |,dirfilename$,li| 0000a500 6e 6b 64 65 70 74 68 25 29 0d 3a 16 3c ea 20 6f |nkdepth%).:.<. o| 0000a510 6c 64 6c 6f 63 61 6c 64 69 72 24 2c 6f 6c 64 64 |ldlocaldir$,oldd| 0000a520 69 72 66 69 6c 65 6e 61 6d 65 24 2c 6f 6c 64 6c |irfilename$,oldl| 0000a530 69 6e 6b 64 65 70 74 68 25 2c 20 6f 6c 64 64 69 |inkdepth%, olddi| 0000a540 72 70 74 72 25 0d 3a 20 18 ea 20 64 69 72 73 69 |rptr%.: .. dirsi| 0000a550 7a 65 25 2c 20 44 69 72 53 63 61 6e 25 0d 3a 2a |ze%, DirScan%.:*| 0000a560 2d ea 20 64 69 72 24 2c 6e 65 78 74 25 2c 74 79 |-. dir$,next%,ty| 0000a570 70 65 25 2c 69 74 65 6d 24 2c 63 75 72 72 65 6e |pe%,item$,curren| 0000a580 74 64 69 72 25 2c 70 74 72 25 0d 3a 34 2d ea 20 |tdir%,ptr%.:4-. | 0000a590 63 75 72 72 65 6e 74 6d 65 6e 75 70 74 72 25 2c |currentmenuptr%,| 0000a5a0 20 6c 6f 63 61 6c 69 25 2c 20 77 69 64 74 68 25 | locali%, width%| 0000a5b0 2c 74 69 74 6c 65 24 0d 3a 3e 1c ea 20 54 69 74 |,title$.:>.. Tit| 0000a5c0 6c 65 50 74 72 25 2c 20 4d 65 6e 75 45 78 74 65 |lePtr%, MenuExte| 0000a5d0 6e 74 25 0d 3a 48 42 ea 20 66 69 6c 65 74 79 70 |nt%.:HB. filetyp| 0000a5e0 65 25 2c 20 66 69 6c 65 74 79 70 65 69 6e 66 6f |e%, filetypeinfo| 0000a5f0 25 2c 6c 69 6e 6b 74 79 70 65 25 2c 6f 62 6a 65 |%,linktype%,obje| 0000a600 63 74 74 79 70 65 25 2c 6c 69 6e 6b 74 79 70 65 |cttype%,linktype| 0000a610 69 6e 66 6f 25 0d 3a 52 14 ea 20 56 61 6c 69 64 |info%.:R.. Valid| 0000a620 4c 6f 61 64 46 6c 61 67 25 0d 3a 5c 17 ea 20 43 |LoadFlag%.:\.. C| 0000a630 75 72 72 65 6e 74 4c 69 6e 6b 44 65 70 74 68 25 |urrentLinkDepth%| 0000a640 0d 3a 66 14 ea 20 4e 75 6d 62 65 72 4f 66 4c 69 |.:f.. NumberOfLi| 0000a650 6e 6b 73 25 0d 3a 70 04 0d 3a 7a 20 43 75 72 72 |nks%.:p..:z Curr| 0000a660 65 6e 74 4c 69 6e 6b 44 65 70 74 68 25 3d 6c 69 |entLinkDepth%=li| 0000a670 6e 6b 64 65 70 74 68 25 0d 3a 84 1c 6f 6c 64 6c |nkdepth%.:..oldl| 0000a680 6f 63 61 6c 64 69 72 24 20 3d 20 6c 6f 63 61 6c |ocaldir$ = local| 0000a690 64 69 72 24 0d 3a 8e 22 6f 6c 64 64 69 72 66 69 |dir$.:."olddirfi| 0000a6a0 6c 65 6e 61 6d 65 24 20 3d 20 64 69 72 66 69 6c |lename$ = dirfil| 0000a6b0 65 6e 61 6d 65 24 0d 3a 98 1e 6f 6c 64 6c 69 6e |ename$.:..oldlin| 0000a6c0 6b 64 65 70 74 68 25 20 3d 20 6c 69 6e 6b 64 65 |kdepth% = linkde| 0000a6d0 70 74 68 25 0d 3a a2 25 6f 6c 64 64 69 72 70 74 |pth%.:.%olddirpt| 0000a6e0 72 25 3d 64 69 72 70 74 72 25 28 6f 6c 64 6c 69 |r%=dirptr%(oldli| 0000a6f0 6e 6b 64 65 70 74 68 25 29 0d 3a ac 0e 44 69 72 |nkdepth%).:..Dir| 0000a700 53 63 61 6e 25 3d a3 0d 3a b6 04 0d 3a c0 37 f5 |Scan%=..:...:.7.| 0000a710 3a f4 20 52 65 70 65 61 74 20 75 6e 74 69 6c 20 |:. Repeat until | 0000a720 6c 6f 61 64 65 64 20 69 6e 20 64 69 72 65 63 74 |loaded in direct| 0000a730 6f 72 79 20 77 69 74 68 20 6e 6f 20 65 72 72 6f |ory with no erro| 0000a740 72 73 0d 3a ca 1c 6c 6f 63 61 6c 64 69 72 24 20 |rs.:..localdir$ | 0000a750 3d 20 6f 6c 64 6c 6f 63 61 6c 64 69 72 24 0d 3a |= oldlocaldir$.:| 0000a760 d4 22 64 69 72 66 69 6c 65 6e 61 6d 65 24 20 3d |."dirfilename$ =| 0000a770 20 6f 6c 64 64 69 72 66 69 6c 65 6e 61 6d 65 24 | olddirfilename$| 0000a780 0d 3a de 1e 6c 69 6e 6b 64 65 70 74 68 25 20 3d |.:..linkdepth% =| 0000a790 20 6f 6c 64 6c 69 6e 6b 64 65 70 74 68 25 0d 3a | oldlinkdepth%.:| 0000a7a0 e8 25 64 69 72 70 74 72 25 28 6f 6c 64 6c 69 6e |.%dirptr%(oldlin| 0000a7b0 6b 64 65 70 74 68 25 29 3d 6f 6c 64 64 69 72 70 |kdepth%)=olddirp| 0000a7c0 74 72 25 0d 3a f2 0e 44 69 72 53 63 61 6e 25 3d |tr%.:..DirScan%=| 0000a7d0 b9 0d 3a fc 04 0d 3b 06 35 f4 20 43 61 6c 63 75 |..:...;.5. Calcu| 0000a7e0 6c 61 74 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 |late pointer to | 0000a7f0 73 68 6f 72 74 63 75 74 6d 65 6e 75 25 20 26 20 |shortcutmenu% & | 0000a800 69 6e 64 65 78 20 69 6e 74 6f 0d 3b 10 17 f4 20 |index into.;... | 0000a810 73 68 6f 72 74 63 75 74 6d 65 6e 75 64 61 74 61 |shortcutmenudata| 0000a820 25 0d 3b 1a 12 64 69 72 24 3d 6c 6f 63 61 6c 64 |%.;..dir$=locald| 0000a830 69 72 24 0d 3b 24 08 61 25 3d 30 0d 3b 2e 21 63 |ir$.;$.a%=0.;.!c| 0000a840 75 72 72 65 6e 74 6d 65 6e 75 70 74 72 25 3d 73 |urrentmenuptr%=s| 0000a850 68 6f 72 74 63 75 74 6d 65 6e 75 25 0d 3b 38 08 |hortcutmenu%.;8.| 0000a860 69 25 3d 30 0d 3b 42 14 c8 95 20 61 25 3c 6c 69 |i%=0.;B... a%<li| 0000a870 6e 6b 64 65 70 74 68 25 0d 3b 4c 2b 63 75 72 72 |nkdepth%.;L+curr| 0000a880 65 6e 74 6d 65 6e 75 70 74 72 25 2b 3d 28 32 38 |entmenuptr%+=(28| 0000a890 2b 28 64 69 72 6c 69 73 74 25 28 61 25 29 2a 32 |+(dirlist%(a%)*2| 0000a8a0 34 29 29 0d 3b 56 14 69 25 2b 3d 64 69 72 6c 69 |4)).;V.i%+=dirli| 0000a8b0 73 74 25 28 61 25 29 0d 3b 60 09 61 25 2b 3d 31 |st%(a%).;`.a%+=1| 0000a8c0 0d 3b 6a 05 ce 0d 3b 74 04 0d 3b 7e 3c f4 20 49 |.;j...;t..;~<. I| 0000a8d0 6e 69 74 69 61 6c 69 73 65 20 73 74 61 72 74 20 |nitialise start | 0000a8e0 6d 65 6e 75 20 75 73 65 72 2f 73 79 73 74 65 6d |menu user/system| 0000a8f0 20 73 65 70 65 72 61 74 6f 72 20 74 6f 20 62 65 | seperator to be| 0000a900 20 6e 75 6c 6c 0d 3b 88 2b e7 20 28 6c 69 6e 6b | null.;.+. (link| 0000a910 64 65 70 74 68 25 3d 30 29 20 53 74 61 72 74 4d |depth%=0) StartM| 0000a920 65 6e 75 53 65 70 65 72 61 74 6f 72 25 3d 2d 31 |enuSeperator%=-1| 0000a930 0d 3b 92 04 0d 3b 9c 39 f4 50 52 4f 43 65 72 72 |.;...;.9.PROCerr| 0000a940 6f 72 28 22 4d 65 6e 75 50 74 72 20 3d 20 22 2b |or("MenuPtr = "+| 0000a950 53 54 52 24 7e 28 63 75 72 72 65 6e 74 6d 65 6e |STR$~(currentmen| 0000a960 75 70 74 72 25 29 2b 43 48 52 24 30 29 0d 3b a6 |uptr%)+CHR$0).;.| 0000a970 0b 6e 65 78 74 25 3d 30 0d 3b b0 14 6e 75 6d 62 |.next%=0.;..numb| 0000a980 65 72 6f 66 69 74 65 6d 73 25 3d 30 0d 3b ba 04 |erofitems%=0.;..| 0000a990 0d 3b c4 38 f4 20 47 65 74 20 6e 75 6d 62 65 72 |.;.8. Get number| 0000a9a0 20 6f 66 20 69 74 65 6d 73 20 69 6e 20 63 75 72 | of items in cur| 0000a9b0 72 65 6e 74 20 64 69 72 65 63 74 6f 72 79 20 6c |rent directory l| 0000a9c0 6f 63 61 6c 64 69 72 24 0d 3b ce 12 c8 95 20 28 |ocaldir$.;.... (| 0000a9d0 6e 65 78 74 25 3c 3e 2d 31 29 0d 3b d8 14 24 73 |next%<>-1).;..$s| 0000a9e0 74 72 69 6e 67 25 3d 64 69 72 24 2b bd 30 0d 3b |tring%=dir$+.0.;| 0000a9f0 e2 45 c8 99 20 22 4f 53 5f 47 42 50 42 22 2c 31 |.E.. "OS_GBPB",1| 0000aa00 30 2c 73 74 72 69 6e 67 25 2c 64 62 6c 6f 63 6b |0,string%,dblock| 0000aa10 25 2c 31 2c 6e 65 78 74 25 2c 36 33 2c 22 2a 22 |%,1,next%,63,"*"| 0000aa20 20 b8 20 2c 2c 2c 6e 75 6d 62 65 72 25 2c 6e 65 | . ,,,number%,ne| 0000aa30 78 74 25 0d 3b ec 21 e7 20 6e 65 78 74 25 3c 3e |xt%.;.!. next%<>| 0000aa40 2d 31 20 6e 75 6d 62 65 72 6f 66 69 74 65 6d 73 |-1 numberofitems| 0000aa50 25 2b 3d 31 0d 3b f6 05 ce 0d 3c 00 04 0d 3c 0a |%+=1.;....<...<.| 0000aa60 04 0d 3c 14 3e f4 50 52 4f 43 65 72 72 6f 72 28 |..<.>.PROCerror(| 0000aa70 22 44 69 72 65 63 74 6f 72 79 20 73 69 7a 65 20 |"Directory size | 0000aa80 3d 20 22 2b 53 54 52 24 28 6e 75 6d 62 65 72 6f |= "+STR$(numbero| 0000aa90 66 69 74 65 6d 73 25 29 2b 43 48 52 24 30 29 0d |fitems%)+CHR$0).| 0000aaa0 3c 1e 04 0d 3c 28 27 64 69 72 6c 69 73 74 25 28 |<...<('dirlist%(| 0000aab0 6c 69 6e 6b 64 65 70 74 68 25 29 3d 6e 75 6d 62 |linkdepth%)=numb| 0000aac0 65 72 6f 66 69 74 65 6d 73 25 0d 3c 32 39 6e 65 |erofitems%.<29ne| 0000aad0 78 74 6d 65 6e 75 70 74 72 25 3d 63 75 72 72 65 |xtmenuptr%=curre| 0000aae0 6e 74 6d 65 6e 75 70 74 72 25 2b 28 32 38 2b 28 |ntmenuptr%+(28+(| 0000aaf0 6e 75 6d 62 65 72 6f 66 69 74 65 6d 73 25 2a 32 |numberofitems%*2| 0000ab00 34 29 29 0d 3c 3c 26 64 69 72 70 74 72 25 28 6c |4)).<<&dirptr%(l| 0000ab10 69 6e 6b 64 65 70 74 68 25 2b 31 29 3d 6e 65 78 |inkdepth%+1)=nex| 0000ab20 74 6d 65 6e 75 70 74 72 25 0d 3c 46 04 0d 3c 50 |tmenuptr%.<F..<P| 0000ab30 0e 6c 6f 63 61 6c 69 25 3d 69 25 0d 3c 5a 1a f4 |.locali%=i%.<Z..| 0000ab40 20 42 75 69 6c 64 20 74 69 74 6c 65 6c 65 73 73 | Build titleless| 0000ab50 20 6d 65 6e 75 0d 3c 64 2c f4 20 74 69 74 6c 65 | menu.<d,. title| 0000ab60 24 3d 22 4d 65 6e 75 20 22 2b 53 54 52 24 28 63 |$="Menu "+STR$(c| 0000ab70 75 72 72 65 6e 74 64 69 72 25 29 2b 43 48 52 24 |urrentdir%)+CHR$| 0000ab80 30 0d 3c 6e 3b e7 20 28 6c 69 6e 6b 64 65 70 74 |0.<n;. (linkdept| 0000ab90 68 25 3d 31 20 80 20 c0 64 69 72 66 69 6c 65 6e |h%=1 . .dirfilen| 0000aba0 61 6d 65 24 2c 31 29 3d bd 28 53 79 73 46 69 6c |ame$,1)=.(SysFil| 0000abb0 65 50 72 65 66 69 78 25 29 29 20 8c 0d 3c 78 2f |ePrefix%)) ..<x/| 0000abc0 20 74 69 74 6c 65 24 3d c2 64 69 72 66 69 6c 65 | title$=.dirfile| 0000abd0 6e 61 6d 65 24 2c a9 28 64 69 72 66 69 6c 65 6e |name$,.(dirfilen| 0000abe0 61 6d 65 24 29 2d 31 29 2b bd 30 0d 3c 82 06 20 |ame$)-1)+.0.<.. | 0000abf0 cc 0d 3c 8c 1b 20 74 69 74 6c 65 24 3d 64 69 72 |..<.. title$=dir| 0000ac00 66 69 6c 65 6e 61 6d 65 24 2b bd 30 0d 3c 96 05 |filename$+.0.<..| 0000ac10 cd 0d 3c a0 04 0d 3c aa 1d 54 69 74 6c 65 50 74 |..<...<..TitlePt| 0000ac20 72 25 3d 63 75 72 72 65 6e 74 6d 65 6e 75 70 74 |r%=currentmenupt| 0000ac30 72 25 0d 3c b4 15 24 54 69 74 6c 65 50 74 72 25 |r%.<..$TitlePtr%| 0000ac40 3d 74 69 74 6c 65 24 0d 3c be 1b 77 69 64 74 68 |=title$.<..width| 0000ac50 25 3d 28 a9 28 74 69 74 6c 65 24 29 2d 32 29 2a |%=(.(title$)-2)*| 0000ac60 31 36 0d 3c c8 22 63 75 72 72 65 6e 74 6d 65 6e |16.<."currentmen| 0000ac70 75 70 74 72 25 21 31 32 20 3d 20 26 30 30 30 37 |uptr%!12 = &0007| 0000ac80 30 32 30 37 0d 3c d2 19 63 75 72 72 65 6e 74 6d |0207.<..currentm| 0000ac90 65 6e 75 70 74 72 25 21 32 30 3d 34 34 0d 3c dc |enuptr%!20=44.<.| 0000aca0 18 63 75 72 72 65 6e 74 6d 65 6e 75 70 74 72 25 |.currentmenuptr%| 0000acb0 21 32 34 3d 30 0d 3c e6 1b 70 74 72 25 3d 63 75 |!24=0.<..ptr%=cu| 0000acc0 72 72 65 6e 74 6d 65 6e 75 70 74 72 25 2b 32 38 |rrentmenuptr%+28| 0000acd0 0d 3c f0 04 0d 3c fa 0b 6e 65 78 74 25 3d 30 0d |.<...<..next%=0.| 0000ace0 3d 04 04 0d 3d 0e 21 4e 75 6d 62 65 72 4f 66 4c |=...=.!NumberOfL| 0000acf0 69 6e 6b 73 25 3d 6e 75 6d 62 65 72 6f 66 69 74 |inks%=numberofit| 0000ad00 65 6d 73 25 0d 3d 18 04 0d 3d 22 2a c8 95 20 28 |ems%.=...="*.. (| 0000ad10 6e 65 78 74 25 3c 4e 75 6d 62 65 72 4f 66 4c 69 |next%<NumberOfLi| 0000ad20 6e 6b 73 25 20 80 20 44 69 72 53 63 61 6e 25 3d |nks% . DirScan%=| 0000ad30 b9 29 0d 3d 2c 14 56 61 6c 69 64 4c 6f 61 64 46 |.).=,.ValidLoadF| 0000ad40 6c 61 67 25 3d b9 0d 3d 36 2f c8 99 20 22 4f 53 |lag%=..=6/.. "OS| 0000ad50 5f 47 42 50 42 22 2c 31 30 2c 64 69 72 24 2c 64 |_GBPB",10,dir$,d| 0000ad60 62 6c 6f 63 6b 25 2c 31 2c 6e 65 78 74 25 2c 36 |block%,1,next%,6| 0000ad70 33 2c 22 2a 22 0d 3d 40 0c 6e 65 78 74 25 2b 3d |3,"*".=@.next%+=| 0000ad80 31 0d 3d 4a 0e 6c 6f 63 61 6c 69 25 3d 69 25 0d |1.=J.locali%=i%.| 0000ad90 3d 54 2f f4 20 47 65 74 20 4f 62 6a 65 63 74 20 |=T/. Get Object | 0000ada0 74 79 70 65 20 28 32 20 3d 20 64 69 72 65 63 74 |type (2 = direct| 0000adb0 6f 72 79 2c 20 31 20 3d 20 66 69 6c 65 29 0d 3d |ory, 1 = file).=| 0000adc0 5e 17 74 79 70 65 25 20 3d 20 64 62 6c 6f 63 6b |^.type% = dblock| 0000add0 25 3f 26 31 30 0d 3d 68 1d f4 20 47 65 74 20 6e |%?&10.=h.. Get n| 0000ade0 61 6d 65 20 6f 66 20 74 68 69 73 20 6f 62 6a 65 |ame of this obje| 0000adf0 63 74 0d 3d 72 1f 69 74 65 6d 24 3d a4 67 65 74 |ct.=r.item$=.get| 0000ae00 6e 61 6d 65 28 64 62 6c 6f 63 6b 25 2b 26 31 34 |name(dblock%+&14| 0000ae10 29 0d 3d 7c 19 f4 20 47 65 74 20 66 69 6c 65 20 |).=|.. Get file | 0000ae20 61 74 74 72 69 62 75 74 65 73 0d 3d 86 22 66 69 |attributes.=."fi| 0000ae30 6c 65 74 79 70 65 69 6e 66 6f 25 3d 20 21 64 62 |letypeinfo%= !db| 0000ae40 6c 6f 63 6b 25 20 3e 3e 3e 20 32 30 0d 3d 90 23 |lock% >>> 20.=.#| 0000ae50 66 69 6c 65 74 79 70 65 25 3d 28 21 64 62 6c 6f |filetype%=(!dblo| 0000ae60 63 6b 25 20 3e 3e 20 38 29 80 20 26 46 46 46 0d |ck% >> 8). &FFF.| 0000ae70 3d 9a 04 0d 3d a4 1c f4 20 49 6e 69 74 69 61 6c |=...=... Initial| 0000ae80 69 73 65 20 6d 65 6e 75 20 6f 62 6a 65 63 74 0d |ise menu object.| 0000ae90 3d ae 2f 21 70 74 72 25 3d 38 3a f4 20 6d 66 6c |=./!ptr%=8:. mfl| 0000aea0 61 67 73 20 3d 20 26 38 30 20 6d 65 61 6e 73 20 |ags = &80 means | 0000aeb0 6c 61 73 74 20 6d 65 6e 75 20 69 74 65 6d 0d 3d |last menu item.=| 0000aec0 b8 23 70 74 72 25 21 34 3d 2d 31 3a f4 20 70 6f |.#ptr%!4=-1:. po| 0000aed0 69 6e 74 65 72 20 74 6f 20 73 75 62 20 6d 65 6e |inter to sub men| 0000aee0 75 0d 3d c2 2d f4 20 53 74 6f 72 65 20 74 68 69 |u.=.-. Store thi| 0000aef0 73 20 66 69 6c 65 72 20 6f 62 6a 65 63 74 2c 20 |s filer object, | 0000af00 77 68 61 74 65 76 65 72 20 69 74 20 69 73 0d 3d |whatever it is.=| 0000af10 cc 33 21 28 73 68 6f 72 74 63 75 74 6d 65 6e 75 |.3!(shortcutmenu| 0000af20 64 61 74 61 25 2b 28 6c 6f 63 61 6c 69 25 2a 36 |data%+(locali%*6| 0000af30 34 29 2b 33 32 2b 32 38 29 20 3d 20 74 79 70 65 |4)+32+28) = type| 0000af40 25 0d 3d d6 21 f4 20 49 73 20 74 68 69 73 20 6f |%.=.!. Is this o| 0000af50 62 6a 65 63 74 20 61 20 64 69 72 65 63 74 6f 72 |bject a director| 0000af60 79 3f 0d 3d e0 12 e7 20 28 74 79 70 65 25 20 3d |y?.=... (type% =| 0000af70 32 29 20 8c 0d 3d ea 28 20 f4 20 49 66 20 73 6f |2) ..=.( . If so| 0000af80 2c 20 74 68 65 6e 20 61 64 64 20 74 6f 20 64 69 |, then add to di| 0000af90 72 65 63 74 6f 72 79 20 6c 69 73 74 0d 3d f4 31 |rectory list.=.1| 0000afa0 20 24 28 73 68 6f 72 74 63 75 74 6d 65 6e 75 64 | $(shortcutmenud| 0000afb0 61 74 61 25 2b 28 6c 6f 63 61 6c 69 25 2a 36 34 |ata%+(locali%*64| 0000afc0 29 2b 33 32 29 20 3d 20 22 22 2b bd 30 0d 3d fe |)+32) = ""+.0.=.| 0000afd0 2f 20 70 74 72 25 21 34 20 3d 20 6e 65 78 74 6d |/ ptr%!4 = nextm| 0000afe0 65 6e 75 70 74 72 25 3a f4 20 50 6f 69 6e 74 65 |enuptr%:. Pointe| 0000aff0 72 20 74 6f 20 73 75 62 6d 65 6e 75 0d 3e 08 06 |r to submenu.>..| 0000b000 20 cc 0d 3e 12 29 20 f4 20 54 68 69 73 20 69 73 | ..>.) . This is| 0000b010 20 61 20 6c 69 6e 6b 20 61 6e 64 20 6e 6f 74 20 | a link and not | 0000b020 61 20 64 69 72 65 63 74 6f 72 79 0d 3e 1c 2c 20 |a directory.>., | 0000b030 f4 20 20 50 52 4f 43 65 72 72 6f 72 28 22 50 72 |. PROCerror("Pr| 0000b040 6f 63 65 73 73 69 6e 67 20 22 2b 69 74 65 6d 24 |ocessing "+item$| 0000b050 2b 43 48 52 24 30 29 0d 3e 26 22 20 f4 20 47 65 |+CHR$0).>&" . Ge| 0000b060 74 20 66 69 6c 65 74 79 70 65 20 6f 66 20 6c 69 |t filetype of li| 0000b070 6e 6b 20 6f 62 6a 65 63 74 0d 3e 30 31 20 24 73 |nk object.>01 $s| 0000b080 74 72 69 6e 67 25 3d a4 47 65 74 4c 69 6e 6b 43 |tring%=.GetLinkC| 0000b090 6f 6e 74 65 6e 74 73 28 64 69 72 24 2b 22 2e 22 |ontents(dir$+"."| 0000b0a0 2b 69 74 65 6d 24 29 2b bd 30 0d 3e 3a 05 20 0d |+item$)+.0.>:. .| 0000b0b0 3e 44 30 20 e7 20 28 a4 43 68 65 63 6b 56 61 6c |>D0 . (.CheckVal| 0000b0c0 69 64 44 72 69 76 65 28 a4 73 74 72 69 6e 67 28 |idDrive(.string(| 0000b0d0 73 74 72 69 6e 67 25 29 29 20 3d 31 29 20 8c 0d |string%)) =1) ..| 0000b0e0 3e 4e 3a 20 20 c8 99 20 22 4f 53 5f 46 69 6c 65 |>N: .. "OS_File| 0000b0f0 22 2c 31 37 2c 73 74 72 69 6e 67 25 20 b8 20 6f |",17,string% . o| 0000b100 62 6a 65 63 74 74 79 70 65 25 2c 2c 6c 69 6e 6b |bjecttype%,,link| 0000b110 6c 6f 61 64 61 64 64 72 25 0d 3e 58 29 20 20 6c |loadaddr%.>X) l| 0000b120 69 6e 6b 74 79 70 65 25 3d 28 6c 69 6e 6b 6c 6f |inktype%=(linklo| 0000b130 61 64 61 64 64 72 25 3e 3e 38 29 20 80 20 26 46 |adaddr%>>8) . &F| 0000b140 46 46 0d 3e 62 29 20 20 6c 69 6e 6b 74 79 70 65 |FF.>b) linktype| 0000b150 69 6e 66 6f 25 3d 20 6c 69 6e 6b 6c 6f 61 64 61 |info%= linkloada| 0000b160 64 64 72 25 20 3e 3e 3e 20 32 30 0d 3e 6c 06 20 |ddr% >>> 20.>l. | 0000b170 cc 0d 3e 76 13 20 20 6f 62 6a 65 63 74 74 79 70 |..>v. objecttyp| 0000b180 65 25 3d 30 0d 3e 80 06 20 cd 0d 3e 8a 55 20 f4 |e%=0.>.. ..>.U .| 0000b190 50 52 4f 43 65 72 72 6f 72 28 46 4e 47 65 74 4c |PROCerror(FNGetL| 0000b1a0 69 6e 6b 43 6f 6e 74 65 6e 74 73 28 64 69 72 24 |inkContents(dir$| 0000b1b0 2b 22 2e 22 2b 69 74 65 6d 24 29 2b 22 20 69 73 |+"."+item$)+" is| 0000b1c0 20 61 20 22 2b 53 54 52 24 28 6c 69 6e 6b 74 79 | a "+STR$(linkty| 0000b1d0 70 65 69 6e 66 6f 25 29 2b 43 48 52 24 30 29 0d |peinfo%)+CHR$0).| 0000b1e0 3e 94 18 20 e7 20 28 6f 62 6a 65 63 74 74 79 70 |>.. . (objecttyp| 0000b1f0 65 25 3d 30 29 20 8c 0d 3e 9e 59 20 20 f4 20 50 |e%=0) ..>.Y . P| 0000b200 52 4f 43 65 72 72 6f 72 28 22 45 72 72 6f 72 20 |ROCerror("Error | 0000b210 3a 20 4c 69 6e 6b 28 22 2b 46 4e 47 65 74 4c 69 |: Link("+FNGetLi| 0000b220 6e 6b 43 6f 6e 74 65 6e 74 73 28 64 69 72 24 2b |nkContents(dir$+| 0000b230 22 2e 22 2b 69 74 65 6d 24 29 2b 22 29 20 6e 6f |"."+item$)+") no| 0000b240 74 20 66 6f 75 6e 64 2e 22 2b 43 48 52 24 30 29 |t found."+CHR$0)| 0000b250 0d 3e a8 31 20 20 f4 20 44 65 6c 65 74 65 20 74 |.>.1 . Delete t| 0000b260 68 69 73 20 6c 69 6e 6b 20 61 6e 64 20 72 65 73 |his link and res| 0000b270 63 61 6e 20 74 68 65 20 64 69 72 65 63 74 6f 72 |can the director| 0000b280 79 0d 3e b2 3d 20 20 f4 20 53 61 66 65 74 79 20 |y.>.= . Safety | 0000b290 66 69 72 73 74 20 2d 20 65 6e 73 75 72 65 20 74 |first - ensure t| 0000b2a0 68 69 73 20 66 69 6c 65 20 69 73 20 61 63 74 75 |his file is actu| 0000b2b0 61 6c 6c 79 20 61 20 6c 69 6e 6b 20 69 6e 0d 3e |ally a link in.>| 0000b2c0 bc 43 20 20 f4 20 63 61 73 65 20 74 68 65 20 3c |.C . case the <| 0000b2d0 53 74 61 72 74 24 44 69 72 3e 20 73 79 73 74 65 |Start$Dir> syste| 0000b2e0 6d 20 76 61 72 69 61 62 6c 65 20 68 61 73 20 62 |m variable has b| 0000b2f0 65 63 6f 6d 65 20 63 6f 72 72 75 70 74 20 28 21 |ecome corrupt (!| 0000b300 29 0d 3e c6 1a 20 20 e7 20 28 66 69 6c 65 74 79 |).>.. . (filety| 0000b310 70 65 25 3d 26 61 66 33 29 20 8c 0d 3e d0 71 20 |pe%=&af3) ..>.q | 0000b320 20 20 f4 20 50 52 4f 43 65 72 72 6f 72 28 22 49 | . PROCerror("I| 0000b330 6e 76 61 6c 69 64 20 6c 69 6e 6b 20 22 2b 64 69 |nvalid link "+di| 0000b340 72 24 2b 22 2e 22 2b 69 74 65 6d 24 2b 22 20 68 |r$+"."+item$+" h| 0000b350 61 73 20 62 65 65 6e 20 66 6f 75 6e 64 20 61 6e |as been found an| 0000b360 64 20 77 69 6c 6c 20 62 65 20 64 65 6c 65 74 65 |d will be delete| 0000b370 64 20 77 68 65 6e 20 79 6f 75 20 63 6c 69 63 6b |d when you click| 0000b380 20 4f 4b 2e 22 2b 43 48 52 24 30 29 0d 3e da 25 | OK."+CHR$0).>.%| 0000b390 20 20 20 ff 28 22 64 65 6c 65 74 65 20 22 2b 64 | .("delete "+d| 0000b3a0 69 72 24 2b 22 2e 22 2b 69 74 65 6d 24 2b bd 30 |ir$+"."+item$+.0| 0000b3b0 29 0d 3e e4 11 20 20 20 44 69 72 53 63 61 6e 25 |).>.. DirScan%| 0000b3c0 3d a3 0d 3e ee 17 20 20 20 56 61 6c 69 64 4c 6f |=..>.. ValidLo| 0000b3d0 61 64 46 6c 61 67 25 3d a3 0d 3e f8 08 20 20 20 |adFlag%=..>.. | 0000b3e0 cc 0d 3f 02 ff 20 20 20 f2 65 72 72 6f 72 28 22 |..?.. .error("| 0000b3f0 45 72 72 6f 72 3a 20 41 6e 6f 74 68 65 72 20 70 |Error: Another p| 0000b400 72 6f 67 72 61 6d 20 68 61 73 20 61 6c 74 65 72 |rogram has alter| 0000b410 65 64 20 74 68 65 20 3c 53 74 61 72 74 24 44 69 |ed the <Start$Di| 0000b420 72 3e 20 73 79 73 74 65 6d 20 76 61 72 69 61 62 |r> system variab| 0000b430 6c 65 20 6f 72 20 73 6f 6d 65 6f 6e 65 20 68 61 |le or someone ha| 0000b440 73 20 70 6c 61 63 65 64 20 61 20 6e 6f 6e 2d 6c |s placed a non-l| 0000b450 69 6e 6b 20 22 2b 64 69 72 24 2b 22 2e 22 2b 69 |ink "+dir$+"."+i| 0000b460 74 65 6d 24 2b 22 20 69 6e 74 6f 20 74 68 65 20 |tem$+" into the | 0000b470 6c 69 6e 6b 73 20 64 69 72 65 63 74 6f 72 79 2e |links directory.| 0000b480 20 52 65 72 75 6e 20 74 68 65 20 21 53 74 61 72 | Rerun the !Star| 0000b490 74 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 6f 72 |t application or| 0000b4a0 20 72 65 6d 6f 76 65 20 74 68 65 20 6f 66 66 65 | remove the offe| 0000b4b0 6e 64 69 6e 67 20 66 69 6c 65 20 66 72 6f 6d 20 |nding file from | 0000b4c0 74 68 65 20 21 53 74 61 72 74 2e 4c 69 6e 6b 73 |the !Start.Links| 0000b4d0 20 64 69 72 65 63 74 6f 72 79 2e 22 2b bd 30 29 | directory."+.0)| 0000b4e0 0d 3f 0c 07 20 20 cd 0d 3f 16 05 20 0d 3f 20 06 |.?.. ..?.. .? .| 0000b4f0 20 cd 0d 3f 2a 05 20 0d 3f 34 40 20 f4 20 24 28 | ..?*. .?4@ . $(| 0000b500 73 68 6f 72 74 63 75 74 6d 65 6e 75 64 61 74 61 |shortcutmenudata| 0000b510 25 2b 28 6c 6f 63 61 6c 69 25 2a 36 34 29 2b 33 |%+(locali%*64)+3| 0000b520 32 29 20 3d 20 22 53 73 6d 61 6c 6c 5f 64 69 72 |2) = "Ssmall_dir| 0000b530 22 2b 43 48 52 24 30 0d 3f 3e 05 20 0d 3f 48 18 |"+CHR$0.?>. .?H.| 0000b540 20 e7 20 28 6f 62 6a 65 63 74 74 79 70 65 25 3d | . (objecttype%=| 0000b550 31 29 20 8c 0d 3f 52 28 20 20 f4 20 54 68 69 73 |1) ..?R( . This| 0000b560 20 6c 69 6e 6b 20 69 73 20 61 20 70 6f 69 6e 74 | link is a point| 0000b570 65 72 20 74 6f 20 61 20 66 69 6c 65 0d 3f 5c 37 |er to a file.?\7| 0000b580 20 20 f4 20 50 52 4f 43 65 72 72 6f 72 28 46 4e | . PROCerror(FN| 0000b590 73 74 72 69 6e 67 28 73 74 72 69 6e 67 25 29 2b |string(string%)+| 0000b5a0 22 20 69 73 20 61 20 66 69 6c 65 22 2b 43 48 52 |" is a file"+CHR| 0000b5b0 24 30 29 0d 3f 66 47 20 20 24 28 73 68 6f 72 74 |$0).?fG $(short| 0000b5c0 63 75 74 6d 65 6e 75 64 61 74 61 25 2b 28 6c 6f |cutmenudata%+(lo| 0000b5d0 63 61 6c 69 25 2a 36 34 29 2b 33 32 29 20 3d 20 |cali%*64)+32) = | 0000b5e0 22 53 73 6d 61 6c 6c 5f 22 2b c3 7e 28 6c 69 6e |"Ssmall_"+.~(lin| 0000b5f0 6b 74 79 70 65 25 29 2b bd 30 0d 3f 70 06 20 cd |ktype%)+.0.?p. .| 0000b600 0d 3f 7a 04 0d 3f 84 3d 20 f4 20 46 6f 72 20 73 |.?z..?.= . For s| 0000b610 6f 6d 65 20 77 69 65 72 64 20 72 65 61 73 6f 6e |ome wierd reason| 0000b620 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 74 | the following t| 0000b630 77 6f 20 76 61 72 69 61 62 6c 65 73 20 6d 75 73 |wo variables mus| 0000b640 74 0d 3f 8e 3b 20 f4 20 62 65 20 65 76 61 6c 75 |t.?.; . be evalu| 0000b650 61 74 65 64 20 6f 75 74 73 69 64 65 20 6f 66 20 |ated outside of | 0000b660 74 68 65 20 6f 62 6a 65 63 74 74 79 70 65 20 74 |the objecttype t| 0000b670 65 73 74 2e 20 49 20 74 68 69 6e 6b 0d 3f 98 3c |est. I think.?.<| 0000b680 20 f4 20 69 74 20 6d 75 73 74 20 62 65 20 73 6f | . it must be so| 0000b690 6d 65 74 68 69 6e 67 20 74 6f 20 64 6f 20 77 69 |mething to do wi| 0000b6a0 74 68 20 74 68 65 20 70 69 70 65 6c 69 6e 65 20 |th the pipeline | 0000b6b0 61 6e 64 2f 6f 72 20 61 0d 3f a2 1c 20 f4 20 62 |and/or a.?.. . b| 0000b6c0 75 67 20 69 6e 20 74 68 65 20 42 41 53 49 43 20 |ug in the BASIC | 0000b6d0 72 6f 6d 2e 0d 3f ac 13 20 73 68 72 69 65 6b 25 |rom..?.. shriek%| 0000b6e0 3d 97 28 22 21 22 29 0d 3f b6 1c 20 6e 61 6d 65 |=.("!").?.. name| 0000b6f0 73 74 61 72 74 25 3d 97 28 c0 69 74 65 6d 24 2c |start%=.(.item$,| 0000b700 31 29 29 0d 3f c0 31 20 f4 20 50 52 4f 43 65 72 |1)).?.1 . PROCer| 0000b710 72 6f 72 28 53 54 52 24 28 6e 61 6d 65 73 74 61 |ror(STR$(namesta| 0000b720 72 74 25 2d 73 68 72 69 65 6b 25 29 2b 43 48 52 |rt%-shriek%)+CHR| 0000b730 24 30 29 20 0d 3f ca 18 20 e7 20 28 6f 62 6a 65 |$0) .?.. . (obje| 0000b740 63 74 74 79 70 65 25 3d 32 29 20 8c 0d 3f d4 3d |cttype%=2) ..?.=| 0000b750 20 20 f4 20 54 68 69 73 20 6c 69 6e 6b 20 69 73 | . This link is| 0000b760 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 6e | a pointer to an| 0000b770 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 6f 72 20 | application or | 0000b780 64 69 72 65 63 74 6f 72 79 0d 3f de 23 20 20 f4 |directory.?.# .| 0000b790 20 50 52 4f 43 65 72 72 6f 72 28 46 69 72 73 74 | PROCerror(First| 0000b7a0 43 68 61 72 24 2b 43 48 52 24 30 29 0d 3f e8 1f |Char$+CHR$0).?..| 0000b7b0 20 20 e7 20 28 6e 61 6d 65 73 74 61 72 74 25 3c | . (namestart%<| 0000b7c0 3e 73 68 72 69 65 6b 25 29 20 8c 0d 3f f2 18 20 |>shriek%) ..?.. | 0000b7d0 20 20 f4 20 21 70 74 72 25 3d 28 21 70 74 72 25 | . !ptr%=(!ptr%| 0000b7e0 29 2b 34 0d 3f fc 3d 20 20 20 24 28 73 68 6f 72 |)+4.?.= $(shor| 0000b7f0 74 63 75 74 6d 65 6e 75 64 61 74 61 25 2b 28 6c |tcutmenudata%+(l| 0000b800 6f 63 61 6c 69 25 2a 36 34 29 2b 33 32 29 20 3d |ocali%*64)+32) =| 0000b810 20 22 53 73 6d 61 6c 6c 5f 64 69 72 22 2b bd 30 | "Ssmall_dir"+.0| 0000b820 0d 40 06 08 20 20 20 cc 0d 40 10 3c 20 20 20 24 |.@.. ..@.< $| 0000b830 28 73 68 6f 72 74 63 75 74 6d 65 6e 75 64 61 74 |(shortcutmenudat| 0000b840 61 25 2b 28 6c 6f 63 61 6c 69 25 2a 36 34 29 2b |a%+(locali%*64)+| 0000b850 33 32 29 20 3d 20 22 53 73 6d 22 2b 69 74 65 6d |32) = "Ssm"+item| 0000b860 24 2b bd 30 0d 40 1a 07 20 20 cd 0d 40 24 06 20 |$+.0.@.. ..@$. | 0000b870 cd 0d 40 2e 04 0d 40 38 05 cd 0d 40 42 04 0d 40 |..@...@8...@B..@| 0000b880 4c 28 f4 20 42 75 69 6c 64 20 72 65 73 74 20 6f |L(. Build rest o| 0000b890 66 20 6d 65 6e 75 20 69 74 65 6d 20 61 74 74 72 |f menu item attr| 0000b8a0 69 62 75 74 65 73 0d 40 56 1f 70 74 72 25 21 38 |ibutes.@V.ptr%!8| 0000b8b0 3d 26 37 30 30 30 33 31 33 3a f4 20 69 63 6f 6e |=&7000313:. icon| 0000b8c0 20 74 79 70 65 0d 40 60 45 f4 20 49 46 20 28 74 | type.@`E. IF (t| 0000b8d0 79 70 65 25 3d 32 20 41 4e 44 20 6f 62 6a 65 63 |ype%=2 AND objec| 0000b8e0 74 74 79 70 65 25 3d 30 29 20 70 74 72 25 21 38 |ttype%=0) ptr%!8| 0000b8f0 3d 26 37 34 30 30 33 31 33 3a 52 45 4d 20 49 6e |=&7400313:REM In| 0000b900 76 61 6c 69 64 20 6c 69 6e 65 0d 40 6a 22 e7 20 |valid line.@j". | 0000b910 28 61 64 64 6c 69 6e 6b 25 3d 31 29 20 70 74 72 |(addlink%=1) ptr| 0000b920 25 21 38 3d 26 33 30 30 30 33 31 33 0d 40 74 2e |%!8=&3000313.@t.| 0000b930 24 28 73 68 6f 72 74 63 75 74 6d 65 6e 75 64 61 |$(shortcutmenuda| 0000b940 74 61 25 2b 28 6c 6f 63 61 6c 69 25 2a 36 34 29 |ta%+(locali%*64)| 0000b950 29 3d 69 74 65 6d 24 2b bd 30 0d 40 7e 2c 70 74 |)=item$+.0.@~,pt| 0000b960 72 25 21 31 32 20 3d 20 73 68 6f 72 74 63 75 74 |r%!12 = shortcut| 0000b970 6d 65 6e 75 64 61 74 61 25 2b 28 6c 6f 63 61 6c |menudata%+(local| 0000b980 69 25 2a 36 34 29 0d 40 88 2f 70 74 72 25 21 31 |i%*64).@./ptr%!1| 0000b990 36 20 3d 20 73 68 6f 72 74 63 75 74 6d 65 6e 75 |6 = shortcutmenu| 0000b9a0 64 61 74 61 25 2b 28 6c 6f 63 61 6c 69 25 2a 36 |data%+(locali%*6| 0000b9b0 34 29 2b 33 32 0d 40 92 35 70 74 72 25 21 32 30 |4)+32.@.5ptr%!20| 0000b9c0 20 3d 20 32 38 3a f4 20 6d 65 6e 75 20 69 74 65 | = 28:. menu ite| 0000b9d0 6d 20 73 74 72 69 6e 67 20 62 75 66 66 65 72 20 |m string buffer | 0000b9e0 3d 20 32 38 20 62 79 74 65 73 0d 40 9c 04 0d 40 |= 28 bytes.@...@| 0000b9f0 a6 16 e7 20 28 6c 69 6e 6b 64 65 70 74 68 25 3d |... (linkdepth%=| 0000ba00 30 29 20 8c 0d 40 b0 3f e7 20 28 c1 69 74 65 6d |0) ..@.?. (.item| 0000ba10 24 2c 31 2c 31 29 3d bd 28 53 79 73 46 69 6c 65 |$,1,1)=.(SysFile| 0000ba20 50 72 65 66 69 78 25 29 20 80 20 53 74 61 72 74 |Prefix%) . Start| 0000ba30 4d 65 6e 75 53 65 70 65 72 61 74 6f 72 25 3c 30 |MenuSeperator%<0| 0000ba40 29 20 8c 0d 40 ba 49 f4 20 50 52 4f 43 65 72 72 |) ..@.I. PROCerr| 0000ba50 6f 72 28 22 4e 61 6d 65 20 3d 20 22 2b 46 4e 73 |or("Name = "+FNs| 0000ba60 74 72 69 6e 67 28 73 68 6f 72 74 63 75 74 6d 65 |tring(shortcutme| 0000ba70 6e 75 64 61 74 61 25 2b 28 6c 6f 63 61 6c 69 25 |nudata%+(locali%| 0000ba80 2a 36 34 29 29 2b 43 48 52 24 30 29 0d 40 c4 1f |*64))+CHR$0).@..| 0000ba90 53 74 61 72 74 4d 65 6e 75 53 65 70 65 72 61 74 |StartMenuSeperat| 0000baa0 6f 72 25 3d 6c 6f 63 61 6c 69 25 0d 40 ce 31 f4 |or%=locali%.@.1.| 0000bab0 20 44 6f 65 73 20 74 68 69 73 20 69 74 65 6d 20 | Does this item | 0000bac0 6e 65 65 64 20 61 20 64 6f 74 74 65 64 20 6c 69 |need a dotted li| 0000bad0 6e 65 20 61 62 6f 76 65 20 69 74 3f 0d 40 d8 2d |ne above it?.@.-| 0000bae0 e7 20 28 6c 6f 63 61 6c 69 25 3e 30 29 20 21 28 |. (locali%>0) !(| 0000baf0 70 74 72 25 2d 32 34 29 3d 28 21 28 70 74 72 25 |ptr%-24)=(!(ptr%| 0000bb00 2d 32 34 29 29 20 2b 20 32 0d 40 e2 05 cd 0d 40 |-24)) + 2.@....@| 0000bb10 ec 75 e7 20 28 6c 6f 63 61 6c 69 25 3e 3d 53 74 |.u. (locali%>=St| 0000bb20 61 72 74 4d 65 6e 75 53 65 70 65 72 61 74 6f 72 |artMenuSeperator| 0000bb30 25 20 80 20 53 74 61 72 74 4d 65 6e 75 53 65 70 |% . StartMenuSep| 0000bb40 65 72 61 74 6f 72 25 3e 3d 30 29 20 24 28 73 68 |erator%>=0) $(sh| 0000bb50 6f 72 74 63 75 74 6d 65 6e 75 64 61 74 61 25 2b |ortcutmenudata%+| 0000bb60 28 6c 6f 63 61 6c 69 25 2a 36 34 29 29 3d c2 69 |(locali%*64))=.i| 0000bb70 74 65 6d 24 2c a9 28 69 74 65 6d 24 29 2d 31 29 |tem$,.(item$)-1)| 0000bb80 2b bd 30 0d 40 f6 05 cd 0d 41 00 04 0d 41 0a 04 |+.0.@....A...A..| 0000bb90 0d 41 14 16 61 25 3d 28 a9 28 69 74 65 6d 24 29 |.A..a%=(.(item$)| 0000bba0 2b 34 29 2a 31 36 0d 41 1e 19 e7 20 61 25 3e 77 |+4)*16.A... a%>w| 0000bbb0 69 64 74 68 25 20 77 69 64 74 68 25 3d 61 25 0d |idth% width%=a%.| 0000bbc0 41 28 0c 70 74 72 25 2b 3d 32 34 0d 41 32 09 69 |A(.ptr%+=24.A2.i| 0000bbd0 25 2b 3d 31 0d 41 3c 05 ce 0d 41 46 04 0d 41 50 |%+=1.A<...AF..AP| 0000bbe0 27 f4 20 48 61 73 20 74 68 69 73 20 6c 69 73 74 |'. Has this list| 0000bbf0 20 67 6f 74 20 61 6e 79 74 68 69 6e 67 20 69 6e | got anything in| 0000bc00 20 69 74 3f 0d 41 5a 20 e7 20 28 64 69 72 6c 69 | it?.AZ . (dirli| 0000bc10 73 74 25 28 6c 69 6e 6b 64 65 70 74 68 25 29 3e |st%(linkdepth%)>| 0000bc20 30 29 20 8c 0d 41 64 27 21 28 70 74 72 25 2d 32 |0) ..Ad'!(ptr%-2| 0000bc30 34 29 3d 26 38 38 3a f4 20 53 65 74 20 6c 61 73 |4)=&88:. Set las| 0000bc40 74 20 6d 65 6e 75 20 69 74 65 6d 0d 41 6e 05 cc |t menu item.An..| 0000bc50 0d 41 78 1b 77 69 64 74 68 25 3d 28 a9 28 74 69 |.Ax.width%=(.(ti| 0000bc60 74 6c 65 24 29 2d 32 29 2a 31 36 0d 41 82 3a f4 |tle$)-2)*16.A.:.| 0000bc70 20 4d 61 6b 65 20 64 65 66 61 75 6c 74 20 66 69 | Make default fi| 0000bc80 72 73 74 20 65 6e 74 72 79 20 62 65 20 67 72 65 |rst entry be gre| 0000bc90 79 65 64 20 6f 75 74 20 6c 61 62 65 6c 20 27 65 |yed out label 'e| 0000bca0 6d 70 74 79 27 0d 41 8c 14 69 74 65 6d 24 3d 22 |mpty'.A..item$="| 0000bcb0 45 6d 70 74 79 22 2b bd 30 0d 41 96 30 24 28 73 |Empty"+.0.A.0$(s| 0000bcc0 68 6f 72 74 63 75 74 6d 65 6e 75 64 61 74 61 25 |hortcutmenudata%| 0000bcd0 2b 28 6c 6f 63 61 6c 69 25 2a 36 34 29 2b 33 32 |+(locali%*64)+32| 0000bce0 29 20 3d 20 22 22 2b bd 30 0d 41 a0 3d 21 70 74 |) = ""+.0.A.=!pt| 0000bcf0 72 25 3d 26 38 38 3a f4 20 6d 66 6c 61 67 73 20 |r%=&88:. mflags | 0000bd00 3d 20 26 38 30 20 6d 65 61 6e 73 20 6c 61 73 74 |= &80 means last| 0000bd10 20 6d 65 6e 75 20 69 74 65 6d 20 38 3d 49 73 73 | menu item 8=Iss| 0000bd20 75 65 57 61 72 6e 0d 41 aa 23 70 74 72 25 21 34 |ueWarn.A.#ptr%!4| 0000bd30 3d 2d 31 3a f4 20 70 6f 69 6e 74 65 72 20 74 6f |=-1:. pointer to| 0000bd40 20 73 75 62 20 6d 65 6e 75 0d 41 b4 14 e7 20 28 | sub menu.A... (| 0000bd50 61 64 64 6c 69 6e 6b 25 3d 31 29 20 8c 0d 41 be |addlink%=1) ..A.| 0000bd60 40 70 74 72 25 21 38 3d 26 33 30 30 30 33 31 33 |@ptr%!8=&3000313| 0000bd70 3a f4 20 67 72 65 79 65 64 20 6f 75 74 20 53 45 |:. greyed out SE| 0000bd80 4c 45 43 54 41 42 4c 45 20 69 63 6f 6e 20 74 79 |LECTABLE icon ty| 0000bd90 70 65 20 28 41 64 64 20 6c 69 6e 6b 29 0d 41 c8 |pe (Add link).A.| 0000bda0 05 cc 0d 41 d2 37 70 74 72 25 21 38 3d 26 32 34 |...A.7ptr%!8=&24| 0000bdb0 30 30 42 33 33 3a f4 20 67 72 65 79 65 64 20 6f |00B33:. greyed o| 0000bdc0 75 74 20 55 4e 53 45 4c 45 43 54 41 42 4c 45 20 |ut UNSELECTABLE | 0000bdd0 69 63 6f 6e 20 74 79 70 65 0d 41 dc 05 cd 0d 41 |icon type.A....A| 0000bde0 e6 2b 24 28 73 68 6f 72 74 63 75 74 6d 65 6e 75 |.+$(shortcutmenu| 0000bdf0 64 61 74 61 25 2b 28 6c 6f 63 61 6c 69 25 2a 36 |data%+(locali%*6| 0000be00 34 29 29 3d 69 74 65 6d 24 0d 41 f0 14 24 28 70 |4))=item$.A..$(p| 0000be10 74 72 25 2b 31 32 29 3d 69 74 65 6d 24 0d 41 fa |tr%+12)=item$.A.| 0000be20 2c 70 74 72 25 21 31 32 20 3d 20 73 68 6f 72 74 |,ptr%!12 = short| 0000be30 63 75 74 6d 65 6e 75 64 61 74 61 25 2b 28 6c 6f |cutmenudata%+(lo| 0000be40 63 61 6c 69 25 2a 36 34 29 0d 42 04 2f 70 74 72 |cali%*64).B./ptr| 0000be50 25 21 31 36 20 3d 20 73 68 6f 72 74 63 75 74 6d |%!16 = shortcutm| 0000be60 65 6e 75 64 61 74 61 25 2b 28 6c 6f 63 61 6c 69 |enudata%+(locali| 0000be70 25 2a 36 34 29 2b 33 32 0d 42 0e 35 70 74 72 25 |%*64)+32.B.5ptr%| 0000be80 21 32 30 20 3d 20 32 38 3a f4 20 6d 65 6e 75 20 |!20 = 28:. menu | 0000be90 69 74 65 6d 20 73 74 72 69 6e 67 20 62 75 66 66 |item string buff| 0000bea0 65 72 20 3d 20 32 38 20 62 79 74 65 73 0d 42 18 |er = 28 bytes.B.| 0000beb0 16 61 25 3d 28 a9 28 69 74 65 6d 24 29 2b 34 29 |.a%=(.(item$)+4)| 0000bec0 2a 31 36 0d 42 22 19 e7 20 61 25 3e 77 69 64 74 |*16.B".. a%>widt| 0000bed0 68 25 20 77 69 64 74 68 25 3d 61 25 0d 42 2c 09 |h% width%=a%.B,.| 0000bee0 69 25 2b 3d 31 0d 42 36 05 cd 0d 42 40 28 f4 20 |i%+=1.B6...B@(. | 0000bef0 44 6f 65 73 20 74 68 69 73 20 6d 65 6e 75 20 66 |Does this menu f| 0000bf00 69 74 20 6f 6e 20 74 68 65 20 73 63 72 65 65 6e |it on the screen| 0000bf10 20 3f 0d 42 4a 33 f4 4d 65 6e 75 45 78 74 65 6e | ?.BJ3.MenuExten| 0000bf20 74 25 20 3d 20 4d 65 6e 75 58 25 2b 28 77 69 64 |t% = MenuX%+(wid| 0000bf30 74 68 25 20 2a 20 4d 65 6e 75 44 69 72 65 63 74 |th% * MenuDirect| 0000bf40 69 6f 6e 25 29 0d 42 54 32 f4 49 46 20 28 4d 65 |ion%).BT2.IF (Me| 0000bf50 6e 75 45 78 74 65 6e 74 25 3e 4f 53 5f 4d 58 25 |nuExtent%>OS_MX%| 0000bf60 20 4f 52 20 4d 65 6e 75 45 78 74 65 6e 74 25 3c | OR MenuExtent%<| 0000bf70 30 29 20 54 48 45 4e 0d 42 5e 17 f4 20 74 69 74 |0) THEN.B^.. tit| 0000bf80 6c 65 24 3d 22 5c 22 2b 74 69 74 6c 65 24 0d 42 |le$="\"+title$.B| 0000bf90 68 19 f4 20 24 54 69 74 6c 65 50 74 72 25 20 3d |h.. $TitlePtr% =| 0000bfa0 20 74 69 74 6c 65 24 0d 42 72 26 f4 20 4d 65 6e | title$.Br&. Men| 0000bfb0 75 44 69 72 65 63 74 69 6f 6e 25 3d 4d 65 6e 75 |uDirection%=Menu| 0000bfc0 44 69 72 65 63 74 69 6f 6e 25 2a 2d 31 0d 42 7c |Direction%*-1.B|| 0000bfd0 16 f4 20 52 45 4d 20 41 64 6a 75 73 74 20 77 69 |.. REM Adjust wi| 0000bfe0 64 74 68 0d 42 86 2c f4 20 49 46 20 28 28 4c 45 |dth.B.,. IF ((LE| 0000bff0 4e 28 74 69 74 6c 65 24 29 2d 32 29 2a 31 36 29 |N(title$)-2)*16)| 0000c000 20 3e 20 77 69 64 74 68 25 29 20 54 48 45 4e 0d | > width%) THEN.| 0000c010 42 90 20 f4 20 20 77 69 64 74 68 25 3d 28 4c 45 |B. . width%=(LE| 0000c020 4e 28 74 69 74 6c 65 24 29 2d 32 29 2a 31 36 0d |N(title$)-2)*16.| 0000c030 42 9a 0b f4 20 45 4e 44 49 46 0d 42 a4 0a f4 45 |B... ENDIF.B...E| 0000c040 4e 44 49 46 0d 42 ae 1d 63 75 72 72 65 6e 74 6d |NDIF.B..currentm| 0000c050 65 6e 75 70 74 72 25 21 31 36 3d 77 69 64 74 68 |enuptr%!16=width| 0000c060 25 0d 42 b8 04 0d 42 c2 0d f4 20 45 4e 44 50 52 |%.B...B... ENDPR| 0000c070 4f 43 0d 42 cc 04 0d 42 d6 1f f4 20 45 6e 64 20 |OC.B...B... End | 0000c080 6f 66 20 64 69 72 65 63 74 6f 72 79 20 73 63 61 |of directory sca| 0000c090 6e 6e 69 6e 67 0d 42 e0 10 fd 20 44 69 72 53 63 |nning.B... DirSc| 0000c0a0 61 6e 25 3d b9 0d 42 ea 27 64 69 72 6c 69 73 74 |an%=..B.'dirlist| 0000c0b0 25 28 6c 69 6e 6b 64 65 70 74 68 25 29 3d 6e 75 |%(linkdepth%)=nu| 0000c0c0 6d 62 65 72 6f 66 69 74 65 6d 73 25 0d 42 f4 04 |mberofitems%.B..| 0000c0d0 0d 42 fe 35 e7 20 28 64 69 72 6c 69 73 74 25 28 |.B.5. (dirlist%(| 0000c0e0 6c 69 6e 6b 64 65 70 74 68 25 29 3d 30 29 20 64 |linkdepth%)=0) d| 0000c0f0 69 72 6c 69 73 74 25 28 6c 69 6e 6b 64 65 70 74 |irlist%(linkdept| 0000c100 68 25 29 3d 31 0d 43 08 05 e1 0d 43 12 04 0d 43 |h%)=1.C....C...C| 0000c110 1c 37 f4 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |.7. ************| 0000c120 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 0000c140 2a 2a 2a 2a 2a 0d 43 26 20 f4 20 41 20 53 75 62 |*****.C& . A Sub| 0000c150 6d 65 6e 75 20 69 73 20 61 62 6f 75 74 20 74 6f |menu is about to| 0000c160 20 6f 70 65 6e 0d 43 30 37 f4 20 2a 2a 2a 2a 2a | open.C07. *****| 0000c170 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 0000c190 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d 43 3a 15 |************.C:.| 0000c1a0 dd f2 73 75 62 6d 65 6e 75 5f 77 61 72 6e 69 6e |..submenu_warnin| 0000c1b0 67 0d 43 44 36 ea 20 70 74 72 25 2c 6c 6f 63 61 |g.CD6. ptr%,loca| 0000c1c0 6c 64 69 72 24 2c 64 65 70 74 68 25 2c 69 6e 64 |ldir$,depth%,ind| 0000c1d0 65 78 25 2c 73 65 6c 65 63 74 69 6f 6e 25 2c 6c |ex%,selection%,l| 0000c1e0 65 61 66 24 2c 69 25 0d 43 4e 31 6c 6f 63 61 6c |eaf$,i%.CN1local| 0000c1f0 64 69 72 24 3d 53 74 61 72 74 50 61 74 68 24 2b |dir$=StartPath$+| 0000c200 22 2e 55 73 65 72 73 2e 22 2b 55 73 65 72 24 2b |".Users."+User$+| 0000c210 22 2e 4c 69 6e 6b 73 22 0d 43 58 38 f4 20 4e 61 |".Links".CX8. Na| 0000c220 76 69 67 61 74 65 20 6d 65 6e 75 20 69 6e 64 65 |vigate menu inde| 0000c230 78 20 64 61 74 61 20 74 6f 20 64 65 74 65 72 6d |x data to determ| 0000c240 69 6e 65 20 77 68 65 72 65 20 77 65 20 61 72 65 |ine where we are| 0000c250 0d 43 62 0c 64 65 70 74 68 25 3d 30 0d 43 6c 0c |.Cb.depth%=0.Cl.| 0000c260 69 6e 64 65 78 25 3d 30 0d 43 76 12 70 74 72 25 |index%=0.Cv.ptr%| 0000c270 3d 62 6c 6f 63 6b 25 2b 33 32 0d 43 80 26 c8 95 |=block%+32.C.&..| 0000c280 20 21 28 28 62 6c 6f 63 6b 25 2b 33 32 29 2b 28 | !((block%+32)+(| 0000c290 64 65 70 74 68 25 2a 34 29 29 20 3c 3e 20 2d 31 |depth%*4)) <> -1| 0000c2a0 0d 43 8a 28 73 65 6c 65 63 74 69 6f 6e 25 3d 21 |.C.(selection%=!| 0000c2b0 28 28 62 6c 6f 63 6b 25 2b 33 32 29 2b 28 64 65 |((block%+32)+(de| 0000c2c0 70 74 68 25 2a 34 29 29 0d 43 94 3d 6c 65 61 66 |pth%*4)).C.=leaf| 0000c2d0 24 3d a4 73 74 72 69 6e 67 28 73 68 6f 72 74 63 |$=.string(shortc| 0000c2e0 75 74 6d 65 6e 75 64 61 74 61 25 2b 28 28 69 6e |utmenudata%+((in| 0000c2f0 64 65 78 25 2b 73 65 6c 65 63 74 69 6f 6e 25 29 |dex%+selection%)| 0000c300 2a 36 34 29 29 0d 43 9e 26 f4 20 49 73 20 74 68 |*64)).C.&. Is th| 0000c310 69 73 20 61 20 73 79 73 74 65 6d 20 64 69 72 65 |is a system dire| 0000c320 63 74 6f 72 79 20 6e 61 6d 65 3f 0d 43 a8 11 69 |ctory name?.C..i| 0000c330 25 3d 73 65 6c 65 63 74 69 6f 6e 25 0d 43 b2 45 |%=selection%.C.E| 0000c340 e7 20 28 64 65 70 74 68 25 3d 30 20 80 20 69 25 |. (depth%=0 . i%| 0000c350 3e 3d 53 74 61 72 74 4d 65 6e 75 53 65 70 65 72 |>=StartMenuSeper| 0000c360 61 74 6f 72 25 20 80 20 53 74 61 72 74 4d 65 6e |ator% . StartMen| 0000c370 75 53 65 70 65 72 61 74 6f 72 25 3e 3d 30 29 20 |uSeperator%>=0) | 0000c380 8c 0d 43 bc 21 6c 65 61 66 24 3d bd 28 53 79 73 |..C.!leaf$=.(Sys| 0000c390 46 69 6c 65 50 72 65 66 69 78 25 29 2b 6c 65 61 |FilePrefix%)+lea| 0000c3a0 66 24 0d 43 c6 05 cd 0d 43 d0 21 6c 6f 63 61 6c |f$.C....C.!local| 0000c3b0 64 69 72 24 3d 6c 6f 63 61 6c 64 69 72 24 2b 22 |dir$=localdir$+"| 0000c3c0 2e 22 2b 6c 65 61 66 24 0d 43 da 1c 69 6e 64 65 |."+leaf$.C..inde| 0000c3d0 78 25 2b 3d 64 69 72 6c 69 73 74 25 28 64 65 70 |x%+=dirlist%(dep| 0000c3e0 74 68 25 29 0d 43 e4 0d 64 65 70 74 68 25 2b 3d |th%).C..depth%+=| 0000c3f0 31 0d 43 ee 05 ce 0d 43 f8 30 f2 53 69 6e 67 6c |1.C....C.0.Singl| 0000c400 65 44 69 72 65 63 74 6f 72 79 52 65 61 64 28 6c |eDirectoryRead(l| 0000c410 6f 63 61 6c 64 69 72 24 2c 6c 65 61 66 24 2c 64 |ocaldir$,leaf$,d| 0000c420 65 70 74 68 25 29 0d 44 02 39 c8 99 22 57 69 6d |epth%).D.9.."Wim| 0000c430 70 5f 43 72 65 61 74 65 53 75 62 4d 65 6e 75 22 |p_CreateSubMenu"| 0000c440 2c 2c 62 6c 6f 63 6b 25 21 32 30 2c 62 6c 6f 63 |,,block%!20,bloc| 0000c450 6b 25 21 32 34 2c 62 6c 6f 63 6b 25 21 32 38 0d |k%!24,block%!28.| 0000c460 44 0c 05 e1 0d 44 16 04 0d 44 20 3b f4 20 2a 2a |D....D...D ;. **| 0000c470 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 0000c4a0 2a 2a 2a 0d 44 2a 1e f4 20 52 65 63 75 72 73 69 |***.D*.. Recursi| 0000c4b0 76 65 20 44 69 72 65 63 74 6f 72 79 20 62 6f 6f |ve Directory boo| 0000c4c0 74 0d 44 34 3b f4 20 2a 2a 2a 2a 2a 2a 2a 2a 2a |t.D4;. *********| 0000c4d0 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 0000c4f0 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d 44 3e 1e |************.D>.| 0000c500 dd f2 44 69 72 65 63 74 6f 72 79 42 6f 6f 74 28 |..DirectoryBoot(| 0000c510 6c 6f 63 61 6c 64 69 72 24 29 0d 44 48 39 ea 20 |localdir$).DH9. | 0000c520 64 69 72 24 2c 20 6e 65 78 74 25 2c 74 79 70 65 |dir$, next%,type| 0000c530 25 2c 20 69 74 65 6d 24 2c 20 6f 62 6a 65 63 74 |%, item$, object| 0000c540 63 6f 75 6e 74 25 2c 20 63 75 72 72 65 6e 74 64 |count%, currentd| 0000c550 69 72 25 0d 44 52 11 ea 20 6e 75 6d 62 65 72 25 |ir%.DR.. number%| 0000c560 2c 4c 44 25 0d 44 5c 18 ea 20 6c 69 6e 6b 74 79 |,LD%.D\.. linkty| 0000c570 70 65 25 2c 6c 69 6e 6b 64 69 72 24 0d 44 66 12 |pe%,linkdir$.Df.| 0000c580 64 69 72 24 3d 6c 6f 63 61 6c 64 69 72 24 0d 44 |dir$=localdir$.D| 0000c590 70 0b 6e 65 78 74 25 3d 30 0d 44 7a 16 f4 53 59 |p.next%=0.Dz..SY| 0000c5a0 53 22 48 6f 75 72 67 6c 61 73 73 5f 4f 6e 22 0d |S"Hourglass_On".| 0000c5b0 44 84 10 c8 95 20 6e 65 78 74 25 3c 3e 2d 31 0d |D.... next%<>-1.| 0000c5c0 44 8e 04 0d 44 98 09 f2 70 6f 6c 6c 0d 44 a2 09 |D...D...poll.D..| 0000c5d0 f2 70 6f 6c 6c 0d 44 ac 04 0d 44 b6 45 c8 99 20 |.poll.D...D.E.. | 0000c5e0 22 4f 53 5f 47 42 50 42 22 2c 31 30 2c 64 69 72 |"OS_GBPB",10,dir| 0000c5f0 24 2c 62 6f 6f 74 62 6c 6f 63 6b 25 2c 31 2c 6e |$,bootblock%,1,n| 0000c600 65 78 74 25 2c 36 33 2c 22 2a 22 20 b8 20 2c 2c |ext%,63,"*" . ,,| 0000c610 2c 6e 75 6d 62 65 72 25 2c 6e 65 78 74 25 0d 44 |,number%,next%.D| 0000c620 c0 2f f4 20 47 65 74 20 4f 62 6a 65 63 74 20 74 |./. Get Object t| 0000c630 79 70 65 20 28 32 20 3d 20 64 69 72 65 63 74 6f |ype (2 = directo| 0000c640 72 79 2c 20 31 20 3d 20 66 69 6c 65 29 0d 44 ca |ry, 1 = file).D.| 0000c650 1a 74 79 70 65 25 20 3d 20 62 6f 6f 74 62 6c 6f |.type% = bootblo| 0000c660 63 6b 25 3f 26 31 30 0d 44 d4 1d f4 20 47 65 74 |ck%?&10.D... Get| 0000c670 20 6e 61 6d 65 20 6f 66 20 74 68 69 73 20 6f 62 | name of this ob| 0000c680 6a 65 63 74 0d 44 de 22 69 74 65 6d 24 3d a4 67 |ject.D."item$=.g| 0000c690 65 74 6e 61 6d 65 28 62 6f 6f 74 62 6c 6f 63 6b |etname(bootblock| 0000c6a0 25 2b 26 31 34 29 0d 44 e8 2c f4 20 48 61 73 20 |%+&14).D.,. Has | 0000c6b0 74 68 69 73 20 64 69 72 65 63 74 6f 72 79 20 67 |this directory g| 0000c6c0 6f 74 20 61 6e 79 74 68 69 6e 67 20 69 6e 20 69 |ot anything in i| 0000c6d0 74 3f 0d 44 f2 13 e7 20 28 6e 65 78 74 25 3c 3e |t?.D... (next%<>| 0000c6e0 2d 31 29 20 8c 0d 44 fc 27 20 f4 20 49 73 20 74 |-1) ..D.' . Is t| 0000c6f0 68 69 73 20 61 20 64 69 72 65 63 74 6f 72 79 20 |his a directory | 0000c700 28 69 65 20 74 79 70 65 3d 32 29 20 0d 45 06 12 |(ie type=2) .E..| 0000c710 20 e7 20 28 74 79 70 65 25 3d 32 29 20 8c 0d 45 | . (type%=2) ..E| 0000c720 10 25 20 20 20 f2 44 69 72 65 63 74 6f 72 79 42 |.% .DirectoryB| 0000c730 6f 6f 74 28 64 69 72 24 2b 22 2e 22 2b 69 74 65 |oot(dir$+"."+ite| 0000c740 6d 24 29 0d 45 1a 06 20 cc 0d 45 24 30 20 20 20 |m$).E.. ..E$0 | 0000c750 f4 20 4d 75 73 74 20 62 65 20 61 20 6c 69 6e 6b |. Must be a link| 0000c760 20 74 6f 20 61 20 66 69 6c 65 20 6f 72 20 61 70 | to a file or ap| 0000c770 70 6c 69 63 61 74 69 6f 6e 0d 45 2e 34 20 20 20 |plication.E.4 | 0000c780 f4 20 57 68 61 74 20 74 79 70 65 20 6f 66 20 74 |. What type of t| 0000c790 68 69 6e 67 20 64 6f 65 73 20 74 68 69 73 20 6c |hing does this l| 0000c7a0 69 6e 6b 20 70 6f 69 6e 74 20 74 6f 3f 0d 45 38 |ink point to?.E8| 0000c7b0 29 20 20 20 f4 20 50 52 4f 43 65 72 72 6f 72 28 |) . PROCerror(| 0000c7c0 22 4f 70 65 6e 69 6e 67 20 22 2b 64 69 72 24 2b |"Opening "+dir$+| 0000c7d0 43 48 52 24 30 29 0d 45 42 1f 20 20 20 4c 44 25 |CHR$0).EB. LD%| 0000c7e0 3d 8e 28 64 69 72 24 2b 22 2e 22 2b 69 74 65 6d |=.(dir$+"."+item| 0000c7f0 24 2b bd 30 29 0d 45 4c 12 20 20 20 6c 69 6e 6b |$+.0).EL. link| 0000c800 64 69 72 24 3d 22 22 0d 45 56 08 20 20 20 f5 0d |dir$="".EV. ..| 0000c810 45 60 13 20 20 20 4c 44 24 3d bd 28 9a 23 4c 44 |E`. LD$=.(.#LD| 0000c820 25 29 0d 45 6a 22 20 20 20 e7 20 28 97 28 4c 44 |%).Ej" . (.(LD| 0000c830 24 29 3e 33 31 29 20 6c 69 6e 6b 64 69 72 24 2b |$)>31) linkdir$+| 0000c840 3d 4c 44 24 0d 45 74 1a 20 20 20 fd 20 97 28 4c |=LD$.Et. . .(L| 0000c850 44 24 29 3c 33 32 20 84 20 c5 23 4c 44 25 0d 45 |D$)<32 . .#LD%.E| 0000c860 7e 0d 20 20 20 d9 23 4c 44 25 20 0d 45 88 22 20 |~. .#LD% .E." | 0000c870 20 20 f4 20 57 68 61 74 20 74 79 70 65 20 69 73 | . What type is| 0000c880 20 74 68 65 20 6c 69 6e 6b 64 69 72 3f 0d 45 92 | the linkdir?.E.| 0000c890 1f 20 20 20 24 62 6f 6f 74 73 74 72 69 6e 67 25 |. $bootstring%| 0000c8a0 3d 6c 69 6e 6b 64 69 72 24 2b bd 30 0d 45 9c 2a |=linkdir$+.0.E.*| 0000c8b0 20 20 20 e7 20 28 a4 43 68 65 63 6b 56 61 6c 69 | . (.CheckVali| 0000c8c0 64 44 72 69 76 65 28 6c 69 6e 6b 64 69 72 24 29 |dDrive(linkdir$)| 0000c8d0 20 3d 31 29 20 8c 0d 45 a6 2f 20 20 20 20 c8 99 | =1) ..E./ ..| 0000c8e0 20 22 58 4f 53 5f 46 69 6c 65 22 2c 35 2c 62 6f | "XOS_File",5,bo| 0000c8f0 6f 74 73 74 72 69 6e 67 25 20 b8 20 6c 69 6e 6b |otstring% . link| 0000c900 74 79 70 65 25 0d 45 b0 2a 20 20 20 20 e7 20 28 |type%.E.* . (| 0000c910 c0 69 74 65 6d 24 2c 31 29 3d 22 21 22 20 84 20 |.item$,1)="!" . | 0000c920 6c 69 6e 6b 74 79 70 65 25 3c 3e 32 29 20 8c 0d |linktype%<>2) ..| 0000c930 45 ba 3f 20 20 20 20 20 f4 20 4d 75 73 74 20 62 |E.? . Must b| 0000c940 65 20 65 69 74 68 65 72 20 61 20 66 69 6c 65 20 |e either a file | 0000c950 6f 72 20 61 70 70 20 6f 72 20 64 69 72 20 73 6f |or app or dir so| 0000c960 20 6c 65 74 27 73 20 62 6f 6f 74 20 69 74 0d 45 | let's boot it.E| 0000c970 c4 40 20 20 20 20 20 f4 20 49 66 20 64 69 72 65 |.@ . If dire| 0000c980 63 74 6f 72 79 2c 20 6f 6e 6c 79 20 62 6f 6f 74 |ctory, only boot| 0000c990 20 69 66 20 62 65 67 69 6e 20 77 69 74 68 20 61 | if begin with a| 0000c9a0 20 21 20 28 53 61 76 65 20 74 69 6d 65 29 0d 45 | ! (Save time).E| 0000c9b0 ce 2f 20 20 20 20 20 24 63 6c 69 73 74 72 69 6e |./ $clistrin| 0000c9c0 67 20 3d 20 22 46 69 6c 65 72 5f 42 6f 6f 74 20 |g = "Filer_Boot | 0000c9d0 22 2b 6c 69 6e 6b 64 69 72 24 2b bd 30 0d 45 d8 |"+linkdir$+.0.E.| 0000c9e0 20 20 20 20 20 20 c8 99 20 22 58 4f 53 5f 43 4c | .. "XOS_CL| 0000c9f0 49 22 2c 20 63 6c 69 73 74 72 69 6e 67 0d 45 e2 |I", clistring.E.| 0000ca00 09 20 20 20 20 cd 0d 45 ec 08 20 20 20 cd 0d 45 |. ..E.. ..E| 0000ca10 f6 06 20 cd 0d 46 00 05 cd 0d 46 0a 05 ce 0d 46 |.. ..F....F....F| 0000ca20 14 17 f4 53 59 53 22 48 6f 75 72 67 6c 61 73 73 |...SYS"Hourglass| 0000ca30 5f 4f 66 66 22 0d 46 1e 05 e1 0d 46 28 04 0d 46 |_Off".F....F(..F| 0000ca40 32 1f dd a4 43 68 65 63 6b 56 61 6c 69 64 44 72 |2...CheckValidDr| 0000ca50 69 76 65 28 69 73 76 70 61 74 68 24 29 0d 46 3c |ive(isvpath$).F<| 0000ca60 21 ea 20 66 73 5f 64 72 69 76 65 24 2c 20 70 70 |!. fs_drive$, pp| 0000ca70 74 72 25 2c 20 63 68 61 72 24 2c 20 61 25 0d 46 |tr%, char$, a%.F| 0000ca80 46 38 f4 20 43 68 65 63 6b 20 74 68 61 74 20 69 |F8. Check that i| 0000ca90 73 76 70 61 74 68 24 20 72 65 73 69 64 65 73 20 |svpath$ resides | 0000caa0 6f 6e 20 61 20 76 61 6c 69 64 20 66 69 6c 65 20 |on a valid file | 0000cab0 73 79 73 74 65 6d 0d 46 50 18 f4 20 61 6e 64 20 |system.FP.. and | 0000cac0 61 20 76 61 6c 69 64 20 64 72 69 76 65 2e 0d 46 |a valid drive..F| 0000cad0 5a 28 f4 20 49 66 20 6e 6f 74 20 74 68 65 6e 20 |Z(. If not then | 0000cae0 72 65 74 75 72 6e 20 30 20 65 6c 73 65 20 72 65 |return 0 else re| 0000caf0 74 75 72 6e 20 31 0d 46 64 0b 70 70 74 72 25 3d |turn 1.Fd.pptr%=| 0000cb00 31 0d 46 6e 10 66 73 5f 64 72 69 76 65 24 3d 22 |1.Fn.fs_drive$="| 0000cb10 22 0d 46 78 05 f5 0d 46 82 1c 63 68 61 72 24 3d |".Fx...F..char$=| 0000cb20 c1 69 73 76 70 61 74 68 24 2c 70 70 74 72 25 2c |.isvpath$,pptr%,| 0000cb30 31 29 0d 46 8c 2c e7 20 28 63 68 61 72 24 3c 3e |1).F.,. (char$<>| 0000cb40 22 2e 22 29 20 66 73 5f 64 72 69 76 65 24 3d 66 |".") fs_drive$=f| 0000cb50 73 5f 64 72 69 76 65 24 2b 63 68 61 72 24 0d 46 |s_drive$+char$.F| 0000cb60 96 11 70 70 74 72 25 3d 70 70 74 72 25 2b 31 0d |..pptr%=pptr%+1.| 0000cb70 46 a0 25 fd 20 28 70 70 74 72 25 3e a9 28 69 73 |F.%. (pptr%>.(is| 0000cb80 76 70 61 74 68 24 29 20 84 20 63 68 61 72 24 3d |vpath$) . char$=| 0000cb90 22 2e 22 29 0d 46 aa 38 f4 20 43 68 65 63 6b 20 |".").F.8. Check | 0000cba0 66 73 5f 64 72 69 76 65 24 20 77 69 74 68 20 61 |fs_drive$ with a| 0000cbb0 6c 6c 20 63 75 72 72 65 6e 74 6c 79 20 69 6e 76 |ll currently inv| 0000cbc0 61 6c 69 64 20 64 65 76 69 63 65 73 0d 46 b4 08 |alid devices.F..| 0000cbd0 61 25 3d 30 0d 46 be 1d c8 95 28 61 25 3c 49 6e |a%=0.F....(a%<In| 0000cbe0 76 61 6c 69 64 44 72 69 76 65 43 6f 75 6e 74 25 |validDriveCount%| 0000cbf0 29 0d 46 c8 3b e7 20 28 66 73 5f 64 72 69 76 65 |).F.;. (fs_drive| 0000cc00 24 3d 49 6e 76 61 6c 69 64 44 72 69 76 65 24 28 |$=InvalidDrive$(| 0000cc10 61 25 29 29 20 61 25 3d 49 6e 76 61 6c 69 64 44 |a%)) a%=InvalidD| 0000cc20 72 69 76 65 43 6f 75 6e 74 25 2b 31 0d 46 d2 09 |riveCount%+1.F..| 0000cc30 61 25 2b 3d 31 0d 46 dc 05 ce 0d 46 e6 2b f4 20 |a%+=1.F....F.+. | 0000cc40 72 65 74 75 72 6e 20 69 66 20 69 74 20 6d 61 74 |return if it mat| 0000cc50 63 68 65 73 20 61 6e 20 69 6e 76 61 6c 69 64 20 |ches an invalid | 0000cc60 64 72 69 76 65 0d 46 f0 22 e7 20 28 61 25 3e 49 |drive.F.". (a%>I| 0000cc70 6e 76 61 6c 69 64 44 72 69 76 65 43 6f 75 6e 74 |nvalidDriveCount| 0000cc80 25 29 20 8c 20 3d 30 0d 46 fa 1b f4 20 49 73 20 |%) . =0.F... Is | 0000cc90 74 68 69 73 20 64 65 76 69 63 65 20 76 61 6c 69 |this device vali| 0000cca0 64 3f 0d 47 04 1b 24 63 6c 69 73 74 72 69 6e 67 |d?.G..$clistring| 0000ccb0 3d 66 73 5f 64 72 69 76 65 24 2b bd 30 0d 47 0e |=fs_drive$+.0.G.| 0000ccc0 26 c8 99 22 58 4f 53 5f 46 69 6c 65 22 2c 35 2c |&.."XOS_File",5,| 0000ccd0 63 6c 69 73 74 72 69 6e 67 20 b8 20 72 65 73 75 |clistring . resu| 0000cce0 6c 74 25 0d 47 18 17 e7 20 28 72 65 73 75 6c 74 |lt%.G... (result| 0000ccf0 25 3c 3d 38 31 39 32 29 20 8c 0d 47 22 1c 20 f4 |%<=8192) ..G". .| 0000cd00 20 54 68 69 73 20 69 73 20 61 20 76 61 6c 69 64 | This is a valid| 0000cd10 20 64 72 69 76 65 0d 47 2c 07 20 3d 31 0d 47 36 | drive.G,. =1.G6| 0000cd20 05 cd 0d 47 40 23 f4 20 55 70 64 61 74 65 20 6c |...G@#. Update l| 0000cd30 69 73 74 20 6f 66 20 69 6e 76 61 6c 69 64 20 64 |ist of invalid d| 0000cd40 72 69 76 65 73 0d 47 4a 31 49 6e 76 61 6c 69 64 |rives.GJ1Invalid| 0000cd50 44 72 69 76 65 24 28 49 6e 76 61 6c 69 64 44 72 |Drive$(InvalidDr| 0000cd60 69 76 65 43 6f 75 6e 74 25 29 20 3d 20 66 73 5f |iveCount%) = fs_| 0000cd70 64 72 69 76 65 24 0d 47 54 19 49 6e 76 61 6c 69 |drive$.GT.Invali| 0000cd80 64 44 72 69 76 65 43 6f 75 6e 74 25 2b 3d 31 0d |dDriveCount%+=1.| 0000cd90 47 5e 06 3d 30 0d 47 68 04 0d 47 72 25 dd a4 47 |G^.=0.Gh..Gr%..G| 0000cda0 65 74 4c 69 6e 6b 43 6f 6e 74 65 6e 74 73 28 67 |etLinkContents(g| 0000cdb0 6c 69 6e 6b 66 69 6c 65 6e 61 6d 65 24 29 0d 47 |linkfilename$).G| 0000cdc0 7c 12 ea 20 6c 69 6e 6b 64 69 72 24 2c 4c 44 25 ||.. linkdir$,LD%| 0000cdd0 0d 47 86 1f 20 20 20 4c 44 25 3d 8e 28 67 6c 69 |.G.. LD%=.(gli| 0000cde0 6e 6b 66 69 6c 65 6e 61 6d 65 24 2b bd 30 29 0d |nkfilename$+.0).| 0000cdf0 47 90 12 20 20 20 6c 69 6e 6b 64 69 72 24 3d 22 |G.. linkdir$="| 0000ce00 22 0d 47 9a 08 20 20 20 f5 0d 47 a4 13 20 20 20 |".G.. ..G.. | 0000ce10 4c 44 24 3d bd 28 9a 23 4c 44 25 29 0d 47 ae 22 |LD$=.(.#LD%).G."| 0000ce20 20 20 20 e7 20 28 97 28 4c 44 24 29 3e 33 31 29 | . (.(LD$)>31)| 0000ce30 20 6c 69 6e 6b 64 69 72 24 2b 3d 4c 44 24 0d 47 | linkdir$+=LD$.G| 0000ce40 b8 1a 20 20 20 fd 20 97 28 4c 44 24 29 3c 33 32 |.. . .(LD$)<32| 0000ce50 20 84 20 c5 23 4c 44 25 0d 47 c2 0c 20 20 20 d9 | . .#LD%.G.. .| 0000ce60 23 4c 44 25 0d 47 cc 10 20 20 20 3d 6c 69 6e 6b |#LD%.G.. =link| 0000ce70 64 69 72 24 0d 47 d6 04 0d 47 e0 04 0d 47 ea 2a |dir$.G...G...G.*| 0000ce80 f4 20 45 78 74 72 61 63 74 20 74 68 65 20 77 73 |. Extract the ws| 0000ce90 74 72 69 6e 67 20 73 74 6f 72 65 64 20 61 74 20 |tring stored at | 0000cea0 61 64 64 72 25 2e 0d 47 f4 15 dd 20 a4 67 65 74 |addr%..G... .get| 0000ceb0 6e 61 6d 65 28 61 64 64 72 25 29 0d 47 fe 08 ea |name(addr%).G...| 0000cec0 20 62 24 0d 48 08 10 c8 95 20 3f 61 64 64 72 25 | b$.H.... ?addr%| 0000ced0 3e 33 31 0d 48 12 11 62 24 2b 3d bd 28 3f 61 64 |>31.H..b$+=.(?ad| 0000cee0 64 72 25 29 0d 48 1c 0c 61 64 64 72 25 2b 3d 31 |dr%).H..addr%+=1| 0000cef0 0d 48 26 05 ce 0d 48 30 07 3d 62 24 0d 48 3a 04 |.H&...H0.=b$.H:.| 0000cf00 0d 48 44 2c f4 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |.HD,. **********| 0000cf10 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| 0000cf20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d 48 4e 21 |************.HN!| 0000cf30 f4 20 43 6c 69 63 6b 20 6f 6e 20 73 68 6f 72 74 |. Click on short| 0000cf40 63 75 74 20 6d 65 6e 75 20 6c 69 73 74 0d 48 58 |cut menu list.HX| 0000cf50 2c f4 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |,. *************| 0000cf60 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| 0000cf70 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d 48 62 18 dd f2 73 |*********.Hb...s| 0000cf80 68 6f 72 74 63 75 74 6d 65 6e 75 73 65 6c 65 63 |hortcutmenuselec| 0000cf90 74 0d 48 6c 42 ea 20 63 75 72 72 65 6e 74 6d 65 |t.HlB. currentme| 0000cfa0 6e 75 70 74 72 25 2c 64 69 72 24 2c 6c 69 6e 6b |nuptr%,dir$,link| 0000cfb0 64 69 72 24 2c 64 72 6f 70 64 69 72 24 2c 63 75 |dir$,dropdir$,cu| 0000cfc0 72 72 65 6e 74 64 72 6f 70 64 69 72 24 2c 6c 65 |rrentdropdir$,le| 0000cfd0 61 66 24 0d 48 76 11 ea 20 52 65 4f 70 65 6e 46 |af$.Hv.. ReOpenF| 0000cfe0 6c 61 67 25 0d 48 80 14 ea 20 49 63 6f 6e 46 6c |lag%.H... IconFl| 0000cff0 61 67 73 41 64 64 72 25 0d 48 8a 04 0d 48 94 11 |agsAddr%.H...H..| 0000d000 52 65 4f 70 65 6e 46 6c 61 67 25 3d a3 0d 48 9e |ReOpenFlag%=..H.| 0000d010 2c 64 69 72 24 3d 53 74 61 72 74 50 61 74 68 24 |,dir$=StartPath$| 0000d020 2b 22 2e 55 73 65 72 73 2e 22 2b 55 73 65 72 24 |+".Users."+User$| 0000d030 2b 22 2e 4c 69 6e 6b 73 22 0d 48 a8 11 64 72 6f |+".Links".H..dro| 0000d040 70 64 69 72 24 3d 64 69 72 24 0d 48 b2 18 63 75 |pdir$=dir$.H..cu| 0000d050 72 72 65 6e 74 64 72 6f 70 64 69 72 24 3d 64 69 |rrentdropdir$=di| 0000d060 72 24 0d 48 bc 21 63 75 72 72 65 6e 74 6d 65 6e |r$.H.!currentmen| 0000d070 75 70 74 72 25 3d 73 68 6f 72 74 63 75 74 6d 65 |uptr%=shortcutme| 0000d080 6e 75 25 0d 48 c6 20 67 6c 6f 62 61 6c 6d 65 6e |nu%.H. globalmen| 0000d090 75 70 74 72 25 3d 73 68 6f 72 74 63 75 74 6d 65 |uptr%=shortcutme| 0000d0a0 6e 75 25 0d 48 d0 2c f4 20 62 6c 6f 63 6b 25 2b |nu%.H.,. block%+| 0000d0b0 30 30 20 69 73 20 73 65 6c 65 63 74 69 6f 6e 20 |00 is selection | 0000d0c0 6e 75 6d 62 65 72 20 6f 66 20 6d 65 6e 75 2c 0d |number of menu,.| 0000d0d0 48 da 10 6e 65 73 74 6c 65 76 65 6c 25 3d 30 0d |H..nestlevel%=0.| 0000d0e0 48 e4 1b 73 65 6c 31 25 3d 62 6c 6f 63 6b 25 21 |H..sel1%=block%!| 0000d0f0 6e 65 73 74 6c 65 76 65 6c 25 0d 48 ee 04 0d 48 |nestlevel%.H...H| 0000d100 f8 3b f4 20 52 65 63 75 72 73 65 20 6d 65 6e 75 |.;. Recurse menu| 0000d110 20 64 69 72 65 63 74 6f 72 79 20 70 6f 69 6e 74 | directory point| 0000d120 65 72 73 20 75 6e 74 69 6c 20 6c 65 61 66 20 6e |ers until leaf n| 0000d130 6f 64 65 20 66 6f 75 6e 64 0d 49 02 05 f5 0d 49 |ode found.I....I| 0000d140 0c 24 73 65 6c 65 63 74 69 6f 6e 25 3d 62 6c 6f |.$selection%=blo| 0000d150 63 6b 25 21 28 6e 65 73 74 6c 65 76 65 6c 25 2a |ck%!(nestlevel%*| 0000d160 34 29 0d 49 16 2c 6e 65 78 74 73 65 6c 65 63 74 |4).I.,nextselect| 0000d170 69 6f 6e 25 3d 62 6c 6f 63 6b 25 21 28 28 6e 65 |ion%=block%!((ne| 0000d180 73 74 6c 65 76 65 6c 25 2b 31 29 2a 34 29 0d 49 |stlevel%+1)*4).I| 0000d190 20 3a f4 50 52 4f 43 65 72 72 6f 72 28 22 4d 65 | :.PROCerror("Me| 0000d1a0 6e 75 20 53 65 6c 65 63 74 69 6f 6e 20 3d 20 22 |nu Selection = "| 0000d1b0 2b 53 54 52 24 28 73 65 6c 65 63 74 69 6f 6e 25 |+STR$(selection%| 0000d1c0 29 2b 43 48 52 24 30 29 0d 49 2a 39 f4 20 47 65 |)+CHR$0).I*9. Ge| 0000d1d0 74 20 70 6f 69 6e 74 65 72 20 74 6f 20 69 63 6f |t pointer to ico| 0000d1e0 6e 20 64 65 66 69 6e 69 74 69 6f 6e 20 66 72 6f |n definition fro| 0000d1f0 6d 20 6d 65 6e 75 20 64 65 66 69 6e 69 74 69 6f |m menu definitio| 0000d200 6e 0d 49 34 37 73 75 62 6d 65 6e 75 70 74 72 25 |n.I47submenuptr%| 0000d210 3d 21 28 63 75 72 72 65 6e 74 6d 65 6e 75 70 74 |=!(currentmenupt| 0000d220 72 25 2b 32 38 2b 28 73 65 6c 65 63 74 69 6f 6e |r%+28+(selection| 0000d230 25 2a 32 34 29 2b 34 29 0d 49 3e 35 64 61 74 61 |%*24)+4).I>5data| 0000d240 70 74 72 25 3d 21 28 63 75 72 72 65 6e 74 6d 65 |ptr%=!(currentme| 0000d250 6e 75 70 74 72 25 2b 32 38 2b 28 73 65 6c 65 63 |nuptr%+28+(selec| 0000d260 74 69 6f 6e 25 2a 32 34 29 2b 31 32 29 0d 49 48 |tion%*24)+12).IH| 0000d270 1b 6c 65 61 66 24 3d a4 73 74 72 69 6e 67 28 64 |.leaf$=.string(d| 0000d280 61 74 61 70 74 72 25 29 0d 49 52 21 f4 20 49 73 |ataptr%).IR!. Is| 0000d290 20 74 68 69 73 20 61 20 73 79 73 74 65 6d 20 66 | this a system f| 0000d2a0 69 6c 65 20 6e 61 6d 65 3f 0d 49 5c 04 0d 49 66 |ile name?.I\..If| 0000d2b0 6d e7 20 28 73 65 6c 65 63 74 69 6f 6e 25 3e 3d |m. (selection%>=| 0000d2c0 53 74 61 72 74 4d 65 6e 75 53 65 70 65 72 61 74 |StartMenuSeperat| 0000d2d0 6f 72 25 20 80 20 53 74 61 72 74 4d 65 6e 75 53 |or% . StartMenuS| 0000d2e0 65 70 65 72 61 74 6f 72 25 3e 3d 30 20 80 20 6e |eperator%>=0 . n| 0000d2f0 65 73 74 6c 65 76 65 6c 25 3d 30 29 20 6c 65 61 |estlevel%=0) lea| 0000d300 66 24 3d bd 28 53 79 73 46 69 6c 65 50 72 65 66 |f$=.(SysFilePref| 0000d310 69 78 25 29 2b 6c 65 61 66 24 0d 49 70 04 0d 49 |ix%)+leaf$.Ip..I| 0000d320 7a 1c 63 75 72 72 65 6e 74 64 72 6f 70 64 69 72 |z.currentdropdir| 0000d330 24 3d 64 72 6f 70 64 69 72 24 0d 49 84 18 e7 20 |$=dropdir$.I... | 0000d340 28 73 65 6c 65 63 74 69 6f 6e 25 3c 3e 2d 31 29 |(selection%<>-1)| 0000d350 20 8c 0d 49 8e 18 20 64 69 72 24 3d 64 69 72 24 | ..I.. dir$=dir$| 0000d360 2b 22 2e 22 2b 6c 65 61 66 24 0d 49 98 31 20 f4 |+"."+leaf$.I.1 .| 0000d370 20 49 73 20 74 68 69 73 20 6d 65 6e 75 20 65 6e | Is this menu en| 0000d380 74 72 79 20 61 20 70 6f 69 6e 74 65 72 20 74 6f |try a pointer to| 0000d390 20 61 20 73 75 62 6d 65 6e 75 3f 0d 49 a2 1a 20 | a submenu?.I.. | 0000d3a0 e7 20 28 73 75 62 6d 65 6e 75 70 74 72 25 3c 3e |. (submenuptr%<>| 0000d3b0 2d 31 29 20 8c 0d 49 ac 20 20 64 72 6f 70 64 69 |-1) ..I. dropdi| 0000d3c0 72 24 3d 64 72 6f 70 64 69 72 24 2b 22 2e 22 2b |r$=dropdir$+"."+| 0000d3d0 6c 65 61 66 24 0d 49 b6 20 20 63 75 72 72 65 6e |leaf$.I. curren| 0000d3e0 74 6d 65 6e 75 70 74 72 25 3d 73 75 62 6d 65 6e |tmenuptr%=submen| 0000d3f0 75 70 74 72 25 0d 49 c0 12 20 6e 65 73 74 6c 65 |uptr%.I.. nestle| 0000d400 76 65 6c 25 2b 3d 31 0d 49 ca 06 20 cd 0d 49 d4 |vel%+=1.I.. ..I.| 0000d410 05 cd 0d 49 de 17 fd 20 6e 65 78 74 73 65 6c 65 |...I... nextsele| 0000d420 63 74 69 6f 6e 25 3d 2d 31 0d 49 e8 04 0d 49 f2 |ction%=-1.I...I.| 0000d430 14 e7 20 28 61 64 64 6c 69 6e 6b 25 3d 31 29 20 |.. (addlink%=1) | 0000d440 8c 0d 49 fc 49 f4 20 50 52 4f 43 65 72 72 6f 72 |..I.I. PROCerror| 0000d450 28 22 41 64 64 69 6e 67 20 73 68 6f 72 74 63 75 |("Adding shortcu| 0000d460 74 5b 22 2b 6e 65 77 6c 69 6e 6b 6c 65 61 66 24 |t["+newlinkleaf$| 0000d470 2b 22 5d 20 69 6e 74 6f 20 22 2b 64 72 6f 70 64 |+"] into "+dropd| 0000d480 69 72 24 2b 43 48 52 24 30 29 0d 4a 06 24 f2 61 |ir$+CHR$0).J.$.a| 0000d490 64 64 6e 65 77 73 68 6f 72 74 63 75 74 28 63 75 |ddnewshortcut(cu| 0000d4a0 72 72 65 6e 74 64 72 6f 70 64 69 72 24 29 0d 4a |rrentdropdir$).J| 0000d4b0 10 05 cc 0d 4a 1a 1e 20 f4 20 49 73 20 74 68 69 |....J.. . Is thi| 0000d4c0 73 20 61 20 76 61 6c 69 64 20 6f 62 6a 65 63 74 |s a valid object| 0000d4d0 3f 0d 4a 24 19 20 e7 20 28 73 75 62 6d 65 6e 75 |?.J$. . (submenu| 0000d4e0 70 74 72 25 3d 2d 31 29 20 8c 0d 4a 2e 1f 20 20 |ptr%=-1) ..J.. | 0000d4f0 f4 20 49 73 20 74 68 65 20 41 4c 54 20 6b 65 79 |. Is the ALT key| 0000d500 20 70 72 65 73 73 65 64 3f 0d 4a 38 1e 20 20 f4 | pressed?.J8. .| 0000d510 20 49 66 20 73 6f 20 64 65 6c 65 74 65 20 74 68 | If so delete th| 0000d520 69 73 20 6c 69 6e 6b 0d 4a 42 0f 20 20 e7 20 28 |is link.JB. . (| 0000d530 a6 2d 33 29 20 8c 0d 4a 4c 1b 20 20 20 ff 28 22 |.-3) ..JL. .("| 0000d540 64 65 6c 65 74 65 20 22 2b 64 69 72 24 2b bd 30 |delete "+dir$+.0| 0000d550 29 0d 4a 56 1d 20 20 20 f4 20 41 6c 74 65 72 20 |).JV. . Alter | 0000d560 6d 65 6e 75 20 73 74 72 75 63 74 75 72 65 0d 4a |menu structure.J| 0000d570 60 3a 20 20 20 49 63 6f 6e 46 6c 61 67 73 41 64 |`: IconFlagsAd| 0000d580 64 72 25 3d 63 75 72 72 65 6e 74 6d 65 6e 75 70 |dr%=currentmenup| 0000d590 74 72 25 2b 32 38 2b 38 2b 28 73 65 6c 65 63 74 |tr%+28+8+(select| 0000d5a0 69 6f 6e 25 2a 32 34 29 0d 4a 6a 43 20 20 20 21 |ion%*24).JjC !| 0000d5b0 49 63 6f 6e 46 6c 61 67 73 41 64 64 72 25 20 3d |IconFlagsAddr% =| 0000d5c0 20 28 21 49 63 6f 6e 46 6c 61 67 73 41 64 64 72 | (!IconFlagsAddr| 0000d5d0 25 29 2b 28 32 5e 32 32 29 3a f4 20 47 72 65 79 |%)+(2^22):. Grey| 0000d5e0 20 6f 75 74 20 73 70 72 69 74 65 0d 4a 74 3d 20 | out sprite.Jt= | 0000d5f0 20 20 21 49 63 6f 6e 46 6c 61 67 73 41 64 64 72 | !IconFlagsAddr| 0000d600 25 20 3d 20 21 49 63 6f 6e 46 6c 61 67 73 41 64 |% = !IconFlagsAd| 0000d610 64 72 25 20 80 20 26 66 66 66 66 66 66 3a f4 20 |dr% . &ffffff:. | 0000d620 47 72 65 79 20 6f 75 74 0d 4a 7e 38 20 20 20 21 |Grey out.J~8 !| 0000d630 49 63 6f 6e 46 6c 61 67 73 41 64 64 72 25 20 3d |IconFlagsAddr% =| 0000d640 20 21 49 63 6f 6e 46 6c 61 67 73 41 64 64 72 25 | !IconFlagsAddr%| 0000d650 2b 26 31 30 30 30 30 30 30 3a f4 20 74 65 78 74 |+&1000000:. text| 0000d660 0d 4a 88 07 20 20 cc 0d 4a 92 2f 20 20 20 f4 20 |.J.. ..J./ . | 0000d670 47 65 74 20 74 68 65 20 64 65 73 6b 74 6f 70 20 |Get the desktop | 0000d680 66 69 6c 65 72 20 74 6f 20 72 75 6e 20 74 68 69 |filer to run thi| 0000d690 73 20 6c 69 6e 6b 0d 4a 9c 2f 20 20 20 64 69 72 |s link.J./ dir| 0000d6a0 24 3d 22 46 69 6c 65 72 5f 52 75 6e 20 22 2b a4 |$="Filer_Run "+.| 0000d6b0 47 65 74 4c 69 6e 6b 43 6f 6e 74 65 6e 74 73 28 |GetLinkContents(| 0000d6c0 64 69 72 24 29 0d 4a a6 27 20 20 20 f4 20 50 52 |dir$).J.' . PR| 0000d6d0 4f 43 65 72 72 6f 72 28 22 4f 53 43 4c 49 20 22 |OCerror("OSCLI "| 0000d6e0 2b 64 69 72 24 2b 43 48 52 24 30 29 0d 4a b0 11 |+dir$+CHR$0).J..| 0000d6f0 20 20 20 ff 28 64 69 72 24 2b bd 30 29 0d 4a ba | .(dir$+.0).J.| 0000d700 07 20 20 cd 0d 4a c4 06 20 cd 0d 4a ce 3c 20 f4 |. ..J.. ..J.< .| 0000d710 20 43 68 65 63 6b 20 69 66 20 41 44 4a 55 53 54 | Check if ADJUST| 0000d720 20 70 72 65 73 73 65 64 20 69 6e 20 77 68 69 63 | pressed in whic| 0000d730 68 20 63 61 73 65 2c 20 72 65 70 72 69 6e 74 20 |h case, reprint | 0000d740 6d 65 6e 75 73 2e 0d 4a d8 25 20 c8 99 22 57 69 |menus..J.% .."Wi| 0000d750 6d 70 5f 47 65 74 50 6f 69 6e 74 65 72 49 6e 66 |mp_GetPointerInf| 0000d760 6f 22 2c 2c 62 6c 6f 63 6b 32 25 0d 4a e2 16 20 |o",,block2%.J.. | 0000d770 62 75 74 74 6f 6e 25 3d 62 6c 6f 63 6b 32 25 21 |button%=block2%!| 0000d780 38 0d 4a ec 1d e7 20 62 75 74 74 6f 6e 25 3d 31 |8.J... button%=1| 0000d790 20 52 65 4f 70 65 6e 46 6c 61 67 25 3d b9 0d 4a | ReOpenFlag%=..J| 0000d7a0 f6 04 0d 4b 00 15 e7 20 28 52 65 4f 70 65 6e 46 |...K... (ReOpenF| 0000d7b0 6c 61 67 25 29 20 8c 0d 4b 0a 21 20 f2 73 68 6f |lag%) ..K.! .sho| 0000d7c0 77 6d 65 6e 75 28 73 68 6f 72 74 63 75 74 6d 65 |wmenu(shortcutme| 0000d7d0 6e 75 25 2c 30 2c 30 29 0d 4b 14 06 20 cc 0d 4b |nu%,0,0).K.. ..K| 0000d7e0 1e 33 20 49 63 6f 6e 42 61 72 4d 65 6e 75 4f 70 |.3 IconBarMenuOp| 0000d7f0 65 6e 25 3d 30 3a f4 20 52 65 65 6e 61 62 6c 65 |en%=0:. Reenable| 0000d800 20 69 63 6f 6e 20 62 61 72 20 74 6f 6f 6c 74 69 | icon bar toolti| 0000d810 70 0d 4b 28 05 cd 0d 4b 32 05 cd 0d 4b 3c 05 e1 |p.K(...K2...K<..| 0000d820 0d 4b 46 04 0d 4b 50 19 dd f2 63 6c 69 63 6b 5f |.KF..KP...click_| 0000d830 69 6e 66 6f 28 62 75 74 74 6f 6e 25 29 0d 4b 5a |info(button%).KZ| 0000d840 10 c8 8e 20 62 75 74 74 6f 6e 25 20 ca 0d 4b 64 |... button% ..Kd| 0000d850 37 c9 20 32 3a f2 73 68 6f 77 6d 65 6e 75 28 6d |7. 2:.showmenu(m| 0000d860 61 69 6e 5f 6d 65 6e 75 25 2c 21 62 6c 6f 63 6b |ain_menu%,!block| 0000d870 25 2d 36 34 2c 20 28 62 6c 6f 63 6b 25 21 34 29 |%-64, (block%!4)| 0000d880 2b 33 32 29 0d 4b 6e 05 cb 0d 4b 78 05 e1 0d 4b |+32).Kn...Kx...K| 0000d890 82 04 0d 4b 8c 10 dd f2 6d 65 6e 75 73 65 6c 65 |...K....menusele| 0000d8a0 63 74 0d 4b 96 0e ea 20 53 6b 72 6f 6e 6b 79 25 |ct.K... Skronky%| 0000d8b0 0d 4b a0 19 53 6b 72 6f 6e 6b 79 25 3d 63 75 72 |.K..Skronky%=cur| 0000d8c0 72 65 6e 74 6d 65 6e 75 25 0d 4b aa 11 c8 8e 20 |rentmenu%.K.... | 0000d8d0 53 6b 72 6f 6e 6b 79 25 20 ca 0d 4b b4 20 c9 20 |Skronky% ..K. . | 0000d8e0 6d 61 69 6e 5f 6d 65 6e 75 25 3a f2 6d 61 69 6e |main_menu%:.main| 0000d8f0 6d 65 6e 75 73 65 6c 65 63 74 0d 4b be 27 c9 20 |menuselect.K.'. | 0000d900 73 68 6f 72 74 63 75 74 6d 65 6e 75 25 3a f2 73 |shortcutmenu%:.s| 0000d910 68 6f 72 74 63 75 74 6d 65 6e 75 73 65 6c 65 63 |hortcutmenuselec| 0000d920 74 0d 4b c8 05 cb 0d 4b d2 05 e1 0d 4b dc 04 0d |t.K....K....K...| 0000d930 4b e6 14 dd f2 6d 61 69 6e 6d 65 6e 75 73 65 6c |K....mainmenusel| 0000d940 65 63 74 0d 4b f0 32 f4 20 62 6c 6f 63 6b 25 2b |ect.K.2. block%+| 0000d950 30 30 20 69 73 20 73 65 6c 65 63 74 69 6f 6e 20 |00 is selection | 0000d960 6e 75 6d 62 65 72 20 6f 66 20 66 69 72 73 74 20 |number of first | 0000d970 6d 65 6e 75 2c 0d 4b fa 38 f4 20 62 6c 6f 63 6b |menu,.K.8. block| 0000d980 25 2b 30 34 20 69 73 20 73 65 6c 65 63 74 69 6f |%+04 is selectio| 0000d990 6e 20 6e 75 6d 62 65 72 20 6f 66 20 73 65 63 6f |n number of seco| 0000d9a0 6e 64 20 6c 65 76 65 6c 20 65 74 63 2e 0d 4c 04 |nd level etc..L.| 0000d9b0 20 73 65 6c 31 25 3d 21 62 6c 6f 63 6b 25 3a 73 | sel1%=!block%:s| 0000d9c0 65 6c 32 25 3d 62 6c 6f 63 6b 25 21 34 0d 4c 0e |el2%=block%!4.L.| 0000d9d0 23 c8 99 22 57 69 6d 70 5f 47 65 74 50 6f 69 6e |#.."Wimp_GetPoin| 0000d9e0 74 65 72 49 6e 66 6f 22 2c 2c 62 6c 6f 63 6b 25 |terInfo",,block%| 0000d9f0 0d 4c 18 14 62 75 74 74 6f 6e 25 3d 62 6c 6f 63 |.L..button%=bloc| 0000da00 6b 25 21 38 0d 4c 22 0e c8 8e 20 73 65 6c 31 25 |k%!8.L"... sel1%| 0000da10 20 ca 0d 4c 2c 14 c9 20 30 3a f2 4f 70 65 6e 49 | ..L,.. 0:.OpenI| 0000da20 6e 66 6f 42 6f 78 0d 4c 36 0e c9 20 31 3a f2 63 |nfoBox.L6.. 1:.c| 0000da30 6c 65 61 72 0d 4c 40 0e c9 20 32 3a f2 73 6d 61 |lear.L@.. 2:.sma| 0000da40 73 68 0d 4c 4a 12 c9 20 33 3a f2 4f 70 65 6e 4c |sh.LJ.. 3:.OpenL| 0000da50 69 6e 6b 73 0d 4c 54 0f c9 20 34 3a 71 75 69 74 |inks.LT.. 4:quit| 0000da60 25 3d b9 0d 4c 5e 05 cb 0d 4c 68 3b f4 20 43 68 |%=..L^...Lh;. Ch| 0000da70 65 63 6b 20 69 66 20 41 44 4a 55 53 54 20 70 72 |eck if ADJUST pr| 0000da80 65 73 73 65 64 20 69 6e 20 77 68 69 63 68 20 63 |essed in which c| 0000da90 61 73 65 2c 20 72 65 70 72 69 6e 74 20 6d 65 6e |ase, reprint men| 0000daa0 75 73 2e 0d 4c 72 11 e7 20 62 75 74 74 6f 6e 25 |us..Lr.. button%| 0000dab0 3d 31 20 8c 0d 4c 7c 1d f2 73 68 6f 77 6d 65 6e |=1 ..L|..showmen| 0000dac0 75 28 6d 61 69 6e 5f 6d 65 6e 75 25 2c 30 2c 30 |u(main_menu%,0,0| 0000dad0 29 0d 4c 86 05 cc 0d 4c 90 32 49 63 6f 6e 42 61 |).L....L.2IconBa| 0000dae0 72 4d 65 6e 75 4f 70 65 6e 25 3d 30 3a f4 20 52 |rMenuOpen%=0:. R| 0000daf0 65 65 6e 61 62 6c 65 20 69 63 6f 6e 20 62 61 72 |eenable icon bar| 0000db00 20 74 6f 6f 6c 74 69 70 0d 4c 9a 05 cd 0d 4c a4 | tooltip.L....L.| 0000db10 05 e1 0d 4c ae 04 0d 4c b8 0f dd f2 4f 70 65 6e |...L...L....Open| 0000db20 4c 69 6e 6b 73 0d 4c c2 3e ff 28 22 46 69 6c 65 |Links.L.>.("File| 0000db30 72 5f 4f 70 65 6e 64 69 72 20 22 2b 53 74 61 72 |r_Opendir "+Star| 0000db40 74 50 61 74 68 24 2b 22 2e 55 73 65 72 73 2e 22 |tPath$+".Users."| 0000db50 2b 55 73 65 72 24 2b 22 2e 4c 69 6e 6b 73 22 2b |+User$+".Links"+| 0000db60 bd 30 29 0d 4c cc 05 e1 0d 4c d6 04 0d 4c e0 1d |.0).L....L...L..| 0000db70 dd f2 73 68 6f 77 6d 65 6e 75 28 6d 65 6e 75 25 |..showmenu(menu%| 0000db80 2c 6d 78 25 2c 6d 79 25 29 0d 4c ea 16 63 75 72 |,mx%,my%).L..cur| 0000db90 72 65 6e 74 6d 65 6e 75 25 3d 6d 65 6e 75 25 0d |rentmenu%=menu%.| 0000dba0 4c f4 3b c8 99 22 57 69 6d 70 5f 43 72 65 61 74 |L.;.."Wimp_Creat| 0000dbb0 65 4d 65 6e 75 22 2c 2c 6d 65 6e 75 25 2c 6d 78 |eMenu",,menu%,mx| 0000dbc0 25 2c 6d 79 25 20 b8 20 63 75 72 72 65 6e 74 6d |%,my% . currentm| 0000dbd0 65 6e 75 68 61 6e 64 6c 65 25 0d 4c fe 05 e1 0d |enuhandle%.L....| 0000dbe0 4d 08 04 0d 4d 12 39 f4 20 2a 2a 2a 2a 2a 2a 2a |M...M.9. *******| 0000dbf0 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 0000dc10 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d 4d 1c 04 |************.M..| 0000dc20 0d 4d 26 0b dd f2 63 6c 65 61 72 0d 4d 30 33 58 |.M&...clear.M03X| 0000dc30 25 3d ae 28 53 74 61 72 74 50 61 74 68 24 2b 22 |%=.(StartPath$+"| 0000dc40 2e 55 73 65 72 73 2e 22 2b 55 73 65 72 24 2b 22 |.Users."+User$+"| 0000dc50 2e 7e 7e 4f 70 65 6e 22 29 3a d9 23 58 25 0d 4d |.~~Open"):.#X%.M| 0000dc60 3a 34 58 25 3d ae 28 53 74 61 72 74 50 61 74 68 |:4X%=.(StartPath| 0000dc70 24 2b 22 2e 55 73 65 72 73 2e 22 2b 55 73 65 72 |$+".Users."+User| 0000dc80 24 2b 22 2e 7e 7e 43 6c 6f 73 65 22 29 3a d9 23 |$+".~~Close"):.#| 0000dc90 58 25 0d 4d 44 0e f2 6c 6f 61 64 63 61 63 68 65 |X%.MD..loadcache| 0000dca0 0d 4d 4e 05 e1 0d 4d 58 04 0d 4d 62 3d f4 20 2a |.MN...MX..Mb=. *| 0000dcb0 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 0000dce0 2a 2a 2a 2a 2a 2a 0d 4d 6c 04 0d 4d 76 0b dd f2 |******.Ml..Mv...| 0000dcf0 73 6d 61 73 68 0d 4d 80 0e ff 28 22 43 6c 6f 73 |smash.M...("Clos| 0000dd00 65 22 29 0d 4d 8a 17 c8 99 22 48 6f 75 72 67 6c |e").M...."Hourgl| 0000dd10 61 73 73 5f 53 6d 61 73 68 22 0d 4d 94 05 e1 0d |ass_Smash".M....| 0000dd20 4d 9e 04 0d 4d a8 3d f4 20 2a 2a 2a 2a 2a 2a 2a |M...M.=. *******| 0000dd30 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 0000dd60 0d 4d b2 04 0d 4d bc 29 f4 20 54 65 6c 6c 20 57 |.M...M.). Tell W| 0000dd70 49 4d 50 20 74 6f 20 69 6e 69 74 69 61 6c 69 73 |IMP to initialis| 0000dd80 65 20 61 20 6e 65 77 20 6d 65 6e 75 2e 0d 4d c6 |e a new menu..M.| 0000dd90 3f f4 20 54 68 69 73 20 73 68 6f 75 6c 64 20 72 |?. This should r| 0000dda0 65 61 6c 6c 79 20 62 65 20 64 6f 6e 65 20 62 79 |eally be done by| 0000ddb0 20 6c 6f 61 64 69 6e 67 20 69 6e 20 61 20 4d 45 | loading in a ME| 0000ddc0 4e 55 20 74 65 6d 70 6c 61 74 65 2e 0d 4d d0 16 |NU template..M..| 0000ddd0 dd f2 73 65 74 75 70 6d 65 6e 75 28 6d 65 6e 75 |..setupmenu(menu| 0000dde0 25 29 0d 4d da 1f f3 20 74 69 74 6c 65 24 2c 6e |%).M... title$,n| 0000ddf0 75 6d 25 3a 24 6d 65 6e 75 25 3d 74 69 74 6c 65 |um%:$menu%=title| 0000de00 24 0d 4d e4 1b 77 69 64 74 68 25 3d 28 a9 28 74 |$.M..width%=(.(t| 0000de10 69 74 6c 65 24 29 2d 32 29 2a 31 36 0d 4d ee 2d |itle$)-2)*16.M.-| 0000de20 6d 65 6e 75 25 21 31 32 3d 26 30 30 30 37 30 32 |menu%!12=&000702| 0000de30 30 37 3a 6d 65 6e 75 25 21 32 30 3d 34 34 3a 6d |07:menu%!20=44:m| 0000de40 65 6e 75 25 21 32 34 3d 30 0d 4d f8 1d 70 74 72 |enu%!24=0.M..ptr| 0000de50 25 3d 6d 65 6e 75 25 2b 32 38 3a e3 20 69 25 3d |%=menu%+28:. i%=| 0000de60 31 b8 6e 75 6d 25 0d 4e 02 1b f3 20 6d 66 6c 61 |1.num%.N... mfla| 0000de70 67 73 25 2c 73 75 62 70 74 72 25 2c 69 74 65 6d |gs%,subptr%,item| 0000de80 24 0d 4e 0c 20 21 70 74 72 25 3d 6d 66 6c 61 67 |$.N. !ptr%=mflag| 0000de90 73 25 3a 70 74 72 25 21 34 3d 73 75 62 70 74 72 |s%:ptr%!4=subptr| 0000dea0 25 0d 4e 16 24 70 74 72 25 21 38 3d 26 37 30 30 |%.N.$ptr%!8=&700| 0000deb0 30 30 32 31 3a 24 28 70 74 72 25 2b 31 32 29 3d |0021:$(ptr%+12)=| 0000dec0 69 74 65 6d 24 0d 4e 20 16 61 25 3d 28 a9 28 69 |item$.N .a%=(.(i| 0000ded0 74 65 6d 24 29 2b 31 29 2a 31 36 0d 4e 2a 19 e7 |tem$)+1)*16.N*..| 0000dee0 20 61 25 3e 77 69 64 74 68 25 20 77 69 64 74 68 | a%>width% width| 0000def0 25 3d 61 25 0d 4e 34 0e 70 74 72 25 2b 3d 32 34 |%=a%.N4.ptr%+=24| 0000df00 3a ed 0d 4e 3e 13 6d 65 6e 75 25 21 31 36 3d 77 |:..N>.menu%!16=w| 0000df10 69 64 74 68 25 0d 4e 48 05 e1 0d 4e 52 04 0d 4e |idth%.NH...NR..N| 0000df20 5c 3b f4 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |\;. ************| 0000df30 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 0000df50 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d 4e 66 04 0d 4e 70 |*********.Nf..Np| 0000df60 22 f4 20 66 75 6e 63 74 69 6f 6e 20 74 6f 20 64 |". function to d| 0000df70 65 61 6c 20 77 69 74 68 20 65 72 72 6f 72 73 0d |eal with errors.| 0000df80 4e 7a 11 dd f2 65 72 72 6f 72 28 65 72 72 24 29 |Nz...error(err$)| 0000df90 0d 4e 84 14 21 65 72 72 6f 72 62 6c 6f 63 6b 25 |.N..!errorblock%| 0000dfa0 3d 32 35 35 0d 4e 8e 1c 24 28 65 72 72 6f 72 62 |=255.N..$(errorb| 0000dfb0 6c 6f 63 6b 25 2b 34 29 3d 65 72 72 24 2b bd 30 |lock%+4)=err$+.0| 0000dfc0 0d 4e 98 2c c8 99 20 22 57 69 6d 70 5f 52 65 70 |.N.,.. "Wimp_Rep| 0000dfd0 6f 72 74 45 72 72 6f 72 22 2c 65 72 72 6f 72 62 |ortError",errorb| 0000dfe0 6c 6f 63 6b 25 2c 31 2c 61 70 70 24 0d 4e a2 05 |lock%,1,app$.N..| 0000dff0 e1 0d 4e ac 04 0d 4e b6 3b f4 20 2a 2a 2a 2a 2a |..N...N.;. *****| 0000e000 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 0000e030 0d 4e c0 10 dd f2 4f 70 65 6e 46 53 56 69 65 77 |.N....OpenFSView| 0000e040 0d 4e ca 04 0d 4e d4 05 e1 0d 4e de 3b f4 20 2a |.N...N....N.;. *| 0000e050 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 0000e080 2a 2a 2a 2a 0d 4e e8 11 dd f2 43 6c 6f 73 65 46 |****.N....CloseF| 0000e090 53 56 69 65 77 0d 4e f2 04 0d 4e fc 05 e1 0d 4f |SView.N...N....O| 0000e0a0 06 3b f4 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |.;. ************| 0000e0b0 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 0000e0d0 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d ff |*********..| 0000e0db