Home » Archimedes archive » Acorn Computing » 1994 04 subscription disc.adf » 9404s » PD/BACKDROP/!StickyBrd/!RunImage
PD/BACKDROP/!StickyBrd/!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 Computing » 1994 04 subscription disc.adf » 9404s |
Filename: | PD/BACKDROP/!StickyBrd/!RunImage |
Read OK: | ✔ |
File size: | D5B2 bytes |
Load address: | 0000 |
Exec address: | 0000 |
File contents
10REM >NewPD.!StickyBrd.!RunImage 20REM Public Domain 30REM By David J. Seery 40REM LEN David J. Seery 1992 50REM Current version: 0.80 60 70SYS "XHourglass_On" 80ON ERROR x%=FNerror("Fatal Error (type "+STR$ERR+"/internal error code "+STR$ERL+") "+REPORT$+"...Re-run & try again",1):END 90DIM q% 1200,ind% &400,ind2% &400,menu% 2600,ind3% &400 100DIM ind4% &400,pointer% 500,file$(80),type(80),ind5% &500,ind6% &600 110DIM x(80),y(80),ftype$(80),filetype(80),ind8% &400 120DIM ind9% &500,ind10% &400,filemen% 512 130DIM object% 20,ind14% &600,openparent% 20,main_w% 800 140DIM ind15% &500,fgb% 20,bgb% 20,ind16% &350,modlinfo% 800 150DIM modlmenu% 2000:REM plenty of space for module menu (!) 160DIM modl$(20),modl(20),modli$(20),modlp$(20),modla$(20),modlv$(20) 170DIM modlinf(20),mcode% 300,config_file% 3000,mcode2% 100 180DIM time_block% 20,time_buff% 20 190DIM sprite% &8500:sprite%!0=&8500:sprite%!8=16:SYS "XOS_SpriteOp",9+256,sprite% 200DIM cols% 16,scale% 16 210stayopen=FALSE:spritefile$="":desktop$="":f$="":clockhandle%=-1:clck=FALSE:appdata=FALSE:tiled=FALSE:adjust=FALSE:sploaded=FALSE:modlptr=0:clockx%=1079:clocky%=1023:clocking%=FALSE:new_app$="":file$()="":turbo%=FALSE:locked%=FALSE 220$q%="TASK" 230SYS "XWimp_Initialise",200,!q%,"StickyBrd" TO wimpver%,taskh% 240IF wimpver%<200 PROCtellemoff("Fatal Error (type -1): Wimp Manager out of date (requires 2.00 or later)"):SYS "XWimp_CloseDown":END 250SYS "XInterface_Initialise",taskh% 260SYS "XWimp_OpenTemplate",,"<StickyBrdRes$Dir>.Templates" 270SYS "XWimp_LoadTemplate",,q%,ind8%,ind8%+&400,-1,"clock",0 280SYS "XWimp_CreateWindow",,q% TO clock% 290SYS "XWimp_LoadTemplate",,q%,ind%,ind%+&400,-1,"info",0 300SYS "XWimp_CreateWindow",,q% TO infowind% 310SYS "XWimp_LoadTemplate",,q%,ind2%,ind2%+&400,-1,"moreinfo",0 320SYS "XWimp_CreateWindow",,q% TO moreinfo% 330SYS "XWimp_LoadTemplate",,main_w%,ind3%,ind3%+&400,-1,"main",0 340SYS "XWimp_CreateWindow",,main_w% TO main% 350SYS "XWimp_CreateWindow",,main_w% TO main1% 360SYS "XWimp_LoadTemplate",,q%,ind4%,ind4%+&400,-1,"backdrop",0 370SYS "XWimp_CreateWindow",,q% TO backdrop% 380SYS "XWimp_LoadTemplate",,q%,ind5%,ind5%+&500,-1,"saveas",0 390SYS "XWimp_CreateWindow",,q% TO saveas% 400SYS "XWimp_LoadTemplate",,q%,ind6%,ind6%+&600,-1,"about",0 410SYS "XWimp_CreateWindow",,q% TO about% 420SYS "XWimp_LoadTemplate",,q%,ind9%,ind9%+&500,-1,"warning",0 430SYS "XWimp_CreateWindow",,q% TO warning% 440SYS "XWimp_LoadTemplate",,q%,ind10%,ind10%+&400,-1,"loaded",0 450SYS "XWimp_CreateWindow",,q% TO loaded% 460SYS "XWimp_LoadTemplate",,q%,ind14%,ind14%+&600,-1,"abackdrop",0 470SYS "XWimp_CreateWindow",,q% TO aback% 480SYS "XWimp_LoadTemplate",,q%,ind15%,ind15%+&500,-1,"clockset",0 490SYS "XWimp_CreateWindow",,q% TO cset% 500SYS "XWimp_LoadTemplate",,modlinfo%,ind16%,ind16%+&350,-1,"modlinfo",0 510SYS "XWimp_CloseTemplate" 520PROCset_size 530exists%=OPENUP("<Wimp$Scrap>"):IF exists%>0 CLOSE#exists% 540IF exists%=0 OSCLI("Create <Wimp$Scrap>") 550PROCset_clock_flags(TRUE,FALSE,FALSE,FALSE,TRUE,TRUE) 560PROCmenu(1) 570PROCgrey_menu(menu%+2200,1) 580PROCassemble:!ind_q%=q%:!scl%=scale%:!col%=cols% 590 600PROCopenup(main%,0,win_maxy%,win_maxx%,(win_maxy%-win_miny%)) 610firstrun%=TRUE 620quit%=FALSE 630 640ON ERROR CASE ERR OF 650 WHEN 175 : PROCtellemoff("Cannot copy error (type=1), handle="+STR$main%):appdata=FALSE 660 WHEN 214 : PROCtellemoff("Cannot copy error (type=2), handle="+STR$main%):appdata=FALSE 670 OTHERWISE : IF FNerror("Nonfatal error: "+REPORT$+" (internal error code "+STR$ERL+"), handle="+STR$main%+", sprite area at "+STR$~(sprite%)+" Shall I Quit ?",3)=1 PROCmodl_quit:SYS "XInterface_CloseDown",taskh%:SYS "XWimp_CloseDown":END 680ENDCASE 690IF firstrun% PROCload_modls 700SYS "XHourglass_Off" 710 720REPEAT 730SYS "XWimp_Poll",,q% TO reason% 740SYS "XInterface_PreProcessKey",reason%,q%,taskh% 750SYS "XInterface_Poll",reason%,q%,taskh% 760CASE reason% OF 770WHEN 1 : PROCredraw 780WHEN 2 : SYS "XWimp_OpenWindow",,q% 790WHEN 3 : SYS "XWimp_CloseWindow",,q% 800 IF !q%=backdrop% PROCputiconsprite(backdrop%,4,"toptoff") 810 IF INKEY TRUE PROCiconise(!q%) 820WHEN 6 : PROCcheckmouse 830WHEN 7 : sf$=FNlastbit(sf$):PROCdragend 840WHEN 9 : PROCprocess_menu 850WHEN 17,18 : PROCmessage 860WHEN 19 : PROCmess_ack 870WHEN 0 : PROCupdate_clock:PROCpass_null:PROCtitlemenu 880ENDCASE 890IF firstrun%=TRUE firstrun%=FALSE:PROCopenup(loaded%,315,662,650,300) 900IF clck PROCopenup(clock%,clockx%,clocky%,200,200) 910UNTIL quit% 920SYS "XInterface_CloseDown",taskh% 930SYS "XWimp_CloseDown":END 940 950DEF FNiconbar 960LOCAL i% 970q%!0=-1 980q%!4=0 990q%!8=0 1000q%!12=68 1010q%!16=96 1020q%!20=&2002 1030$(q%+24)="!StickyBrd" 1040SYS "XWimp_CreateIcon",,q% TO i% 1050=i% 1060 1070DEF PROCmessage 1080your_ref%=q%!8 1090my_ref%=q%!12 1100CASE (q%!16) OF 1110WHEN 0 : quit%=TRUE 1120WHEN 1 : IF q%!20<>saveas% THEN 1130 IF appdata=TRUE AND adjust=FALSE THEN 1140 PROCwarning 1150 ENDPROC 1160 ENDIF 1170 SYS "XOS_ReadVarVal","Wimp$Scrap",,-1,0,3 TO ,,exists% 1180 IF exists%=0 PROCtellemoff("Wimp$Scrap not defined"):ENDPROC 1190 q%!36=-1:PROCstring0(q%+44,"<Wimp$Scrap>") 1200 !q%=(48+LEN"<Wimp$Scrap>")ANDNOT3 1210 q%!12=q%!8:q%!16=2:SYS "XWimp_SendMessage",17,q%,q%!4 1220 scrapref%=q%!8:appdata=TRUE 1230 ENDIF 1240WHEN 2 : PROCdosave 1250WHEN 3 : PROClf 1260WHEN 5 : PROCintercept 1270WHEN 8 : PROCmodl_quit 1280WHEN &502 : PROCsendhelp 1290WHEN &400C0 : PROCmenu_message 1300WHEN &400C1 : PROCset_size:PROCpix_trans 1310ENDCASE 1320ENDPROC 1330 1340DEF PROCread_size(RETURN win_maxx%,RETURN win_maxy%,RETURN win_miny%) 1350SYS "XOS_ReadModeVariable",-1,4 TO ,,eig% 1360SYS "XOS_ReadModeVariable",-1,11 TO ,,limit%:limit%+=1 1370win_maxx%=limit%<<eig% 1380SYS "XOS_ReadModeVariable",-1,5 TO ,,eig% 1390SYS "XOS_ReadModeVariable",-1,12 TO ,,limit%:limit%+=1 1400win_maxy%=limit%<<eig% 1410win_miny%=140+(1<<eig%) 1420ENDPROC 1430 1440DEF PROCset_size:win_maxx%=0:win_maxy%=0:win_miny%=0 1450PROCread_size(win_maxx%,win_maxy%,win_miny%) 1460PROCshut(main%) 1470pointer%!0=main%:SYS "XWimp_DeleteWindow",,pointer% 1480pointer%!0=main1%:SYS "XWimp_DeleteWindow",,pointer% 1490main_w%!44=-(win_maxy%-win_miny%):main_w%!48=win_maxx% 1500SYS "Wimp_CreateWindow",,main_w% TO main% 1510SYS "Wimp_CreateWindow",,main_w% TO main1% 1520pointer%!0=main%:pointer%!4=0:SYS "Wimp_GetIconState",,pointer% 1530SYS "Wimp_DeleteIcon",,pointer% 1540pointer%!4=main%:pointer%!8=0:pointer%!12=-(win_maxy%-win_miny%) 1550pointer%!16=win_maxx%:pointer%!20=0 1560SYS "Wimp_CreateIcon",,pointer%+4 1570IF sploaded=TRUE AND tiled=FALSE PROCputiconsprite(main%,0,backspname$) 1580FOR I=0 TO 80 1590IF file$(I)<>"" THEN 1600 spname$=ftype$(I) 1610 SYS "XWimp_SpriteOp",40,,ftype$(I) TO ;flags% 1620 IF (flags% AND 1)=1 THEN 1630 IF filetype(I)=&2000 spname$="application" 1640 IF filetype(I)<>&2000 spname$="file_xxx" 1650 ENDIF 1660 fg$=STR$~(fg):bg$=STR$~(bg):flag$=bg$+fg$+"018039":flag=EVAL("&"+flag$) 1670 PROCcreate_icon(main%,0,x(I)-50,x(I)+115,-(1024-(y(I)-65)),65,spname$,&4701801A) 1680 name$=FNlastbit(file$(I)):wid%=(LENname$)*16 1690 PROCcreate_icon(main%,0,(x(I)-(wid%/2))+30,(x(I)+(wid%/2))+30,-(1024-(y(I)-115)),36,name$,flag) 1700 PROCputiconsprite(main%,i%-1,spname$) 1710ENDIF 1720NEXT 1730PROCopenup(main%,0,win_maxy%,win_maxx%,(win_maxy%-win_miny%)) 1740ENDPROC 1750 1760DEF PROCcheckmouse 1770handle=(q%!12) 1780icon%=q%!16 1790CASE (q%!12) OF 1800WHEN main%,main1% 1810CASE (q%!8) OF 1820WHEN 4 : IF q%!16>0 PROCset_icon(q%!12,q%!16):PROCrun(icon%) 1830WHEN 2 : IF q%!16>0 THEN:PROCsetupinfo:PROCsetmenuitem:ENDIF 1840 IF q%!16=0 THEN:PROCsetclearmenu:ENDIF 1850 SYS "XWimp_CreateMenu",,menu%,!q%-64,q%!4 1860WHEN &10 : IF q%!16>0 adjust=TRUE:sf$=FNlastbit(file$(q%!16)):PROCdragabout(q%!16) 1870WHEN &40 : IF q%!16>0 adjust=FALSE:sf$=FNlastbit(file$(q%!16)):PROCdragabout(q%!16) 1880ENDCASE 1890WHEN infowind% 1900CASE (q%!8) OF 1910WHEN 4 : CASE q%!16 OF 1920WHEN 9 : PROCslabicon:SYS "XWimp_CreateMenu",,-1:PROCopenup(moreinfo%,240,762,800,600) 1930ENDCASE 1940ENDCASE 1950WHEN backdrop% 1960CASE (q%!8) OF 1970WHEN 4 : CASE q%!16 OF 1980WHEN 4 : PROCstaytoggle 1990WHEN 5 : PROCslabicon:PROCputiconsprite(main%,0,""):spritefile$="":sploaded=FALSE 2000WHEN 6 : tiled=TRUE:PROCputiconsprite(backdrop%,6,"tradioon"):PROCputiconsprite(backdrop%,8,"tradiooff") 2010WHEN 8 : tiled=FALSE:PROCputiconsprite(backdrop%,6,"tradiooff"):PROCputiconsprite(backdrop%,8,"tradioon") 2020ENDCASE 2030ENDCASE 2040WHEN saveas% 2050CASE (q%!8) OF 2060WHEN 4 : CASE q%!16 OF 2070WHEN 3 : PROCslabicon:PROCshut(saveas%):sf$=FNtrans("StickyBrdDesktop$Dir")+"."+FNgeticondata(saveas%,2) 2080 PROCload_new_desktop 2090WHEN 4 : PROCslabicon:PROCshut(saveas%):sf$=FNtrans("StickyBrdDesktop$Dir")+"."+FNgeticondata(saveas%,2) 2100 PROCsave_disc 2110ENDCASE 2120ENDCASE 2130WHEN moreinfo% 2140CASE q%!8 OF 2150WHEN 4 : CASE q%!16 OF 2160 WHEN 14 : PROCslabicon:PROCshut(moreinfo%):IF INKEY TRUE PROCiconise(moreinfo%) 2170ENDCASE 2180ENDCASE 2190WHEN warning% 2200CASE q%!8 OF 2210 WHEN 4 : CASE q%!16 OF 2220 WHEN 4 : PROCslabicon:PROCshut(warning%) 2230 WHEN 5 : PROCslabicon:PROCshut(warning%):appdata=0 2240 ENDCASE 2250ENDCASE 2260WHEN loaded% 2270CASE q%!8 OF 2280 WHEN 4 : CASE q%!16 OF 2290 WHEN 5 : PROCslabicon:PROCshut(loaded%) 2300 WHEN 6 : PROCslabicon:PROCshut(loaded%):OSCLI "WimpTask <StickyBrd$Dir>.!Help" 2310 ENDCASE 2320ENDCASE 2330WHEN cset% 2340CASE q%!8 OF 2350 WHEN 4 : CASE q%!16 OF 2360 WHEN 4 : PROCaddh(2) 2370 WHEN 5 : PROCsubh(2) 2380 WHEN 6 : PROCaddm(3) 2390 WHEN 7 : PROCsubm(3) 2400 WHEN 8 : PROCslabicon:PROCsettime(FNgeticondata(cset%,2),FNgeticondata(cset%,3)) 2410 ENDCASE 2420ENDCASE 2430WHEN clock% 2440CASE q%!8 OF 2450 WHEN 4,1 : PROCsavedragbox(clock%,0):clocking%=TRUE 2460ENDCASE 2470OTHERWISE : PROCmodl_mclick(handle,icon%,q%!8) 2480ENDCASE 2490ENDPROC 2500 2510DEF PROCmenu(fvar) 2520LOCAL fg$,bg$,flag$ 2530mblk%=menu% 2540flags=&7000021 2550IF fvar=1 fg=7:bg=4 2560fg$=STR$~(fg):bg$=STR$~(bg) 2570flag$=bg$+FNfgcol(bg)+"000121":bflag=EVAL("&"+flag$) 2580flag$=fg$+FNfgcol(fg)+"000121":fflag=EVAL("&"+flag$) 2590IF fvar=1 $object%="File ''" 2600IF fvar=1 $openparent%="Open Parent" 2610IF fvar=1 $fgb%="Text Foreground" 2620IF fvar=1 $bgb%="Text Background" 2630PROCheader("StickyBrd",18) 2640PROCentry(&02,menu%+400,flags,"Misc") 2650PROCindirect(&00,menu%+300,&07000121,object%) 2660PROCentry(&00,menu%+1900,flags,"Backdrop") 2670PROCentry(&00,-1,flags,"Clear All") 2680PROCentry(&00,menu%+500,flags,"Colours") 2690PROCentry(&00,menu%+1600,flags,"Options") 2700PROCentry(&02,modlmenu%,flags,"Modules") 2710PROCentry(&80,-1,flags,"Quit") 2720IF modlptr=0 PROCgrey_menu(menu%,6) 2730mblk%=menu%+300 2740PROCheader("Object",12) 2750PROCentry(&00,about%,flags,"Info") 2760PROCentry(&00,-1,flags,"Remove") 2770PROCindirect(&80,-1,&07000121,openparent%) 2780mblk%=menu%+400 2790PROCheader("Misc",9) 2800PROCentry(&00,infowind%,flags,"Info") 2810PROCentry(&00,about%,flags,"File") 2820PROCentry(&80,saveas%,flags,"Desktop") 2830mblk%=menu%+500 2840PROCheader("Colours",16) 2850PROCindirect(&00,menu%+600,fflag,fgb%) 2860PROCindirect(&80,menu%+1100,bflag,bgb%) 2870mblk%=menu%+600 2880PROCheader("Colour",4) 2890PROCentry(&00,-1,&07000019,"0") 2900PROCentry(&00,-1,&17000019,"1") 2910PROCentry(&00,-1,&27000019,"2") 2920PROCentry(&00,-1,&30000019,"3") 2930PROCentry(&00,-1,&40000019,"4") 2940PROCentry(&00,-1,&50000019,"5") 2950PROCentry(&00,-1,&60000019,"6") 2960PROCentry(&00,-1,&70000019,"7") 2970PROCentry(&00,-1,&80000019,"8") 2980PROCentry(&00,-1,&97000019,"9") 2990PROCentry(&00,-1,&A0000019,"10") 3000PROCentry(&00,-1,&B0000019,"11") 3010PROCentry(&00,-1,&C7000019,"12") 3020PROCentry(&00,-1,&D0000019,"13") 3030PROCentry(&00,-1,&E7000019,"14") 3040PROCentry(&80,-1,&F7000019,"15") 3050REM phew! and now again... 3060mblk%=menu%+1100 3070PROCheader("Colour",4) 3080REM here we go 3090PROCentry(&00,-1,&07000019,"0") 3100PROCentry(&00,-1,&17000019,"1") 3110PROCentry(&00,-1,&27000019,"2") 3120PROCentry(&00,-1,&30000019,"3") 3130PROCentry(&00,-1,&40000019,"4") 3140PROCentry(&00,-1,&50000019,"5") 3150PROCentry(&00,-1,&60000019,"6") 3160PROCentry(&00,-1,&70000019,"7") 3170PROCentry(&00,-1,&80000019,"8") 3180PROCentry(&00,-1,&97000019,"9") 3190PROCentry(&00,-1,&A0000019,"10") 3200PROCentry(&00,-1,&B0000019,"11") 3210PROCentry(&00,-1,&C7000019,"12") 3220PROCentry(&00,-1,&D0000019,"13") 3230PROCentry(&00,-1,&E7000019,"14") 3240PROCentry(&80,-1,&F7000019,"15") 3250PROCwimp_tick(menu%+600,7) 3260PROCwimp_tick(menu%+1100,4) 3270mblk%=menu%+1600 3280PROCheader("Options",13) 3290PROCentry(&00,-1,flags,"Hide") 3300PROCentry(&02,-1,flags,"Restore") 3310PROCentry(&00-clck,menu%+2100,flags,"Clock") 3320PROCentry(&00,-1,flags,"Update") 3330PROCentry(&80-locked%,-1,flags,"Locked") 3340mblk%=menu%+1900 3350PROCheader("Backdrop",9) 3360PROCentry(&00,backdrop%,flags,"Load") 3370PROCentry(&00,aback%,flags,"Info") 3380PROCentry(&00,-1,flags,"Restore") 3390PROCentry(&80-turbo%,-1,flags,"Turbo") 3400mblk%=menu%+2100 3410PROCheader("Clock",9) 3420PROCentry(&00-emboss,-1,flags,"Embossed") 3430PROCentry(&00-recess,-1,flags,"Recessed") 3440PROCentry(&02-border,-1,flags,"Bordered") 3450PROCentry(&00-twelve,-1,flags,"HH:MM") 3460PROCentry(&00-twfour,-1,flags,"HH:MM:SS") 3470PROCentry(&02-hour,-1,flags,"24 Hour") 3480PROCentry(&80,-1,flags,"Set...") 3490ENDPROC 3500 3510DEF FNfgcol(col) 3520CASE col OF 3530WHEN 0,1,2,9,12,14,15 : ="7" 3540WHEN 3,4,5,6,7,8,10,11,13 : ="0" 3550ENDCASE 3560ENDPROC 3570 3580DEF PROCheader(T$,w) 3590$mblk%=T$ 3600mblk%!12=&70207 3610mblk%!16=w*16 3620mblk%!20=40 3630mblk%!24=0 3640mblk%+=28 3650ENDPROC 3660 3670DEF PROCentry(A%,B%,C%,T$) 3680mblk%!0=A% 3690mblk%!4=B% 3700mblk%!8=C% 3710$(mblk%+12)=T$ 3720mblk%+=24 3730ENDPROC 3740 3750DEF PROCindirect(A%,B%,C%,D%) 3760mblk%!0=A% 3770mblk%!4=B% 3780mblk%!8=C% 3790mblk%!12=D% 3800mblk%!16=-1 3810mblk%!20=20 3820mblk%+=24 3830ENDPROC 3840 3850DEF FNerror(e$,b%):!q%=0:$(q%+4)=e$+CHR$0 3860SYS "XWimp_ReportError",q%,b%,"StickyBrd" TO ,b% 3870=b% 3880 3890DEF PROClf 3900REM 3910f$=STRING$(250," "):f$="":T%=q%+44 3920WHILE ?T%<>0:f$+=CHR$?T%:T%+=1:ENDWHILE 3930IF q%!20=backdrop% AND q%!24=2 THEN 3940PROCloadbackdrop 3950ELSE 3960PROCaddtodesktop 3970ENDIF 3980PROCmodl_dataload(f$,q%!20,q%!24) 3990q%!12=q%!8:q%!16=4:SYS "XWimp_SendMessage",17,q% 4000ENDPROC 4010 4020DEF PROCredraw 4030IF q%!0=main% THEN 4040 IF tiled=TRUE THEN 4050 IF sploaded=TRUE THEN 4060 B%=q% 4070 CALL mcode% 4080 PROCmodl_redraw 4090 ENDPROC 4100 ENDIF 4110 ENDIF 4120ENDIF 4130PROCmodl_redraw 4140SYS "XWimp_RedrawWindow",,q% TO flag 4150WHILE flag<>0 4160SYS "XInterface_Render3dWindow",,q% 4170SYS "XWimp_GetRectangle",,q% TO flag 4180ENDWHILE 4190ENDPROC 4200 4210DEF PROCassemble 4220FOR pass%=8 TO 11 STEP 2 4230P%=mcode%:L%=mcode%+300 4240[OPT pass% 4250.start% 4260SWI "Wimp_RedrawWindow" ; Get Wimp manager to redraw window 4270.rl ; Start of redraw loop 4280CMP R0,#0 ; More to redraw ? 4290MOVEQ PC,R14 ; No, so exit (Program Counter = Link) 4300LDR R2,[R1,#4] ; } 4310LDR R3,[R1,#8] ; } 4320LDR R4,[R1,#12] ; } Get PWA offsets 4330LDR R5,[R1,#16] ; } & such like from R1 (i.e. q%) 4340LDR R6,[R1,#20] ; } 4350LDR R7,[R1,#24] ; } 4360SUB R0,R2,R6 ; Get min x 4370STR R0,mix% ; Store min x 4380SUB R0,R5,R7 ; Get max y 4390SUB R0,R0,#4 ; Correct 4400STR R0,may% ; Store max y 4410SUB R0,R4,R6 ; Get max x 4420SUB R0,R0,#4 ; Correct 4430STR R0,max% ; Store max x 4440SUB R0,R3,R7 ; Get min y 4450STR R0,miy% ; Store min y 4460.spr_num 4470MOV R0,#512 ; 'Plot sprite' reason code -- use indirected 4480ADD R0,R0,#52 ; Make up to 564 - can't represent directly 4490LDR R1,sp% ; Get sprite area 4500LDR R2,name% ; Get sprite name 4510MOV R5,#8 ; Plot type - overwrite, use mask 4520LDR R6,scl% ; Null 4530LDR R7,col% ; Null 4540MOV R8,#0 ; Null 4550LDR R9,miy% ; Minimum Y value 4560.yloop 4570 LDR R10,mix% ; Minimum X value 4580 .xloop 4590 MOV R3,R10 ; X (Taken from loop) 4600 MOV R4,R9 ; Y (Taken from loop) 4610 SWI "OS_SpriteOp" ; Plot it 4620 LDR R11,xinc% ; Get step size 4630 ADD R10,R10,R11 ; Increment X by step size 4640 LDR R11,max% ; Get maximum X 4650 CMP R10,R11 ; Compare 4660 BLE xloop ; Loop back if < max 4670 LDR R11,yinc% ; Get step size 4680 ADD R9,R9,R11 ; Increment Y by step size 4690 LDR R11,may% ; Get maximum Y 4700 CMP R9,R11 ; Compare 4710 BLE yloop ; Loop back if < max 4720LDR R1,ind_q% ; Get address of param block 4730SWI "Wimp_GetRectangle" ; Get next rectangle 4740B rl ; Branch back 4750.sp% EQUD 0 4760.name% EQUD 0 4770.xinc% EQUD 0:.yinc% EQUD 0 4780.max% EQUD 0:.mix% EQUD 0:.may% EQUD 0:.miy% EQUD 0 4790.ind_q% EQUD 0:.scl% EQUD 0:.col% EQUD 0 4800ALIGN 4810.end% 4820] 4830NEXT pass% 4840FOR pass%=0 TO 3 STEP 2 4850P%=mcode2%:L%=mcode2%+100 4860[OPT pass% 4870ADR R1,time_block% 4880MOV R0,#3 4890STRB R0,[R1] 4900MOV R0,#14 4910SWI "OS_Word" 4920MOV PC,R14 4930] 4940NEXT pass% 4950ENDPROC 4960 4970DEF PROCre_asm(type%) 4980CASE type% OF 4990 WHEN TRUE : P%=spr_num 5000 [OPT 2 5010 MOV R0,#512 5020 ADD R0,R0,#34 5030 ] 5040 WHEN FALSE: P%=spr_num 5050 [OPT 2 5060 MOV R0,#512 5070 ADD R0,R0,#52 5080 ] 5090ENDCASE 5100ENDPROC 5110 5120DEF PROCpix_trans 5130IF sploaded THEN 5140SYS "Wimp_ReadPixTrans",&100,sprite%,backspname$,,,,scale%,cols% 5150ENDIF 5160ENDPROC 5170 5180DEF PROCprocess_menu 5190SYS "XWimp_GetPointerInfo",,pointer%:j%=(pointer%!8=1) 5200CASE handle OF 5210WHEN main%,main1% 5220 CASE q%!0 OF 5230 WHEN 1 : CASE q%!4 OF 5240 WHEN 1 : IF (icon% MOD 2=0) icon%-=1 5250 PROCdelete(icon%,1) 5260 PROCmodl_delete(icon%,type(icon%)) 5270 WHEN 2 : IF (icon% MOD 2=0) icon%-=1 5280 OSCLI("WimpTask Filer_OpenDir "+FNdir(file$(icon%))) 5290 ENDCASE 5300 WHEN 2 : CASE q%!4 OF 5310 WHEN 2 : sf$=desktop$ 5320 PROCload_new_desktop 5330 WHEN 3 : turbo%=NOT turbo%:PROCmenu(0):PROCre_asm(turbo%) 5340 ENDCASE 5350 WHEN 3 : PROCdeleteall 5360 WHEN 4 : CASE q%!4 OF 5370 WHEN 0 : IF q%!8<>-1 PROCfg 5380 WHEN 1 : IF q%!8<>-1 PROCbg 5390 ENDCASE 5400 WHEN 5 : CASE q%!4 OF 5410 WHEN 0 : PROCshut(main%):PROCopenup(main1%,0,win_maxy%,win_maxx%,(win_maxy%-win_miny%)):PROCgrey_menu(menu%+2200,0) 5420 PROCgrey_menu(menu%+2200,1) 5430 WHEN 1 : PROCshut(main1%):PROCopenup(main%,0,win_maxy%,win_maxx%,(win_maxy%-win_miny%)):IF clck=TRUE PROCopenup(clock%,clockx%,clocky%,200,200) 5440 PROCgrey_menu(menu%+2200,1) 5450 PROCgrey_menu(menu%+2200,0) 5460 WHEN 2 : CASE q%!8 OF 5470 WHEN -1 : clck=NOT clck:PROCmenu(0):PROCgrey_menu(menu%+2200,1):PROCclock 5480 WHEN 0 : PROCset_clock_flags(TRUE,FALSE,FALSE,twelve,twfour,hour):PROCmenu(0):PROCgrey_menu(menu%+2200,1):PROCrs 5490 WHEN 1 : PROCset_clock_flags(FALSE,TRUE,FALSE,twelve,twfour,hour):PROCmenu(0):PROCgrey_menu(menu%+2200,1):PROCrs 5500 WHEN 2 : PROCset_clock_flags(FALSE,FALSE,TRUE,twelve,twfour,hour):PROCmenu(0):PROCgrey_menu(menu%+2200,1):PROCrs 5510 WHEN 3 : PROCset_clock_flags(emboss,recess,border,TRUE,FALSE,hour):PROCmenu(0):PROCgrey_menu(menu%+2200,1) 5520 WHEN 4 : PROCset_clock_flags(emboss,recess,border,FALSE,TRUE,hour):PROCmenu(0):PROCgrey_menu(menu%+2200,1) 5530 WHEN 5 : PROCset_clock_flags(emboss,recess,border,twelve,twfour,NOT hour):PROCmenu(0):PROCgrey_menu(menu%+2200,1) 5540 WHEN 6 : cx%=pointer%!0:cy%=pointer%!4:PROCsetup_sclck:PROCopenup(cset%,cx%,cy%,500,250):SYS "XWimp_SetCaretPosition",cset%,2,,,-1,LEN(FNgeticondata(cset%,2)) 5550 ENDCASE 5560 WHEN 3 : q%!8=fg:PROCfg 5570 WHEN 4 : locked%=NOT locked%:PROCmenu(0) 5580 ENDCASE 5590 WHEN 6 : PROCmodl_sendmenu 5600 WHEN 7 : PROCmodl_quit:quit%=TRUE 5610ENDCASE 5620WHEN &FFFFFFFF 5630 FOR step%=0 TO q%!0 5640 q$=$(filemen%+28+(24*step%)+12) 5650 filepath$+="."+q$ 5660 NEXT 5670 SYS "XWimp_StartTask","Filer_OpenDir "+filepath$ 5680ENDCASE 5690IF j% THEN SYS "XWimp_CreateMenu",,menu%,pointer%!0,pointer%!4 5700ENDPROC 5710 5720DEF PROCopenup(whandle,x,y,w,h) 5730pointer%!0=whandle 5740pointer%!4=x:pointer%!8=y-h 5750pointer%!12=x+w:pointer%!16=y 5760pointer%!20=0:pointer%!24=0 5770IF whandle=main% OR whandle=main1% OR whandle=clock% pointer%!28=-2 ELSE pointer%!28=-1 5780SYS "XWimp_OpenWindow",,pointer% 5790ENDPROC 5800 5810DEF PROCslabicon 5820SYS "XInterface_SlabButton",,q% 5830q%!8=0 5840SYS "XInterface_SlabButton",,q% 5850ENDPROC 5860 5870DEF FNgeticondata(window%,icon%) 5880pointer%!0=window% 5890pointer%!4=icon% 5900SYS "XWimp_GetIconState",,pointer% 5910=$(pointer%!28) 5920 5930DEF PROCputicondata(window%,icon%,T$) 5940pointer%!0=window% 5950pointer%!4=icon% 5960SYS "XWimp_GetIconState",,pointer% 5970pointer%!8=0 5980pointer%!12=0 5990$(pointer%!28)=T$ 6000SYS "XWimp_SetIconState",,pointer% 6010ENDPROC 6020 6030DEF PROCloadbackdrop 6040sploaded=TRUE:PROCputiconsprite(main%,0,"") 6050LOCAL n%,o%,b%,q$,h%,x%,y%,v%,m%,var%,z$ 6060OSCLI("IconSprites "+f$) 6070SYS "OS_SpriteOp",256+10,sprite%,f$ 6080h%=OPENIN(f$) 6090n%=FNb:o%=FNb:b%=-4 6100PTR#h%=o%+b%:b%+=o%:o%=FNb 6110q$="":FOR var=1 TO 12:q$+=CHR$(BGET#h%):NEXT var 6120palette$="No" 6130x%=FNb:y%=FNb:v%=-FNb+FNb-31:m%=FNb:IFm%=PTR#h%-4 palette$="No" ELSE palette$="Yes" 6140IF m% EOR FNb:z$="Yes" ELSE z$="N" 6150m%=FNb:SYS "XOS_ReadModeVariable",m%,9 TO ,,var% 6160x%=(32*(x%+1)+v%) DIV 2^var%:spx%=x%:spy%=y%+1:backspname$=q$ 6170SYS "XOS_ReadModeVariable",m%,4 TO ,,var% 6180sp1x%=spx%<<var% 6190SYS "XOS_ReadModeVariable",m%,5 TO ,,var% 6200sp1y%=spy%<<var% 6210CLOSE#h% 6220SYS "XOS_CheckModeValid",m% TO exists% 6230IF exists%<>-1 AND exists%<>-2 SYS "XWimp_SetMode",m% 6240PROCstring_at_address(backspname$,loc%) 6250!name%=loc%:!sp%=sprite%:!xinc%=sp1x%:!yinc%=sp1y% 6260PROCpix_trans 6270IF tiled=TRUE PROCtiled(m%,spx%,spy%,q$,x%,y%+1):ENDPROC 6280PROCputiconsprite(main%,0,backspname$) 6290spritefile$=f$ 6300PROCputicondata(aback%,3,f$) 6310PROCputicondata(aback%,4,backspname$) 6320PROCputicondata(aback%,5,palette$) 6330PROCputicondata(aback%,7,"Centred") 6340PROCputicondata(aback%,14,STR$m%) 6350PROCputicondata(aback%,16,STR$x%) 6360PROCputicondata(aback%,18,STR$(y%+1)) 6370SYS "XWimp_CreateMenu",,-1 6380ENDPROC 6390 6400DEF PROCdisplay_block(max) 6410REM debugging routine 6420REM 6430REM Displays wimp parameter block 6440: 6450FOR I=0 TO max STEP 4 6460IF I=24 x%=FNerror(STR$~(pointer%!I),1):NEXT 6470IF I=28 x%=FNerror($(pointer%+I),1):NEXT 6480IF I=32 x%=FNerror($(pointer%+I),1):NEXT:ENDPROC 6490REM and now general purpose stuff 6500x%=FNerror(STR$pointer%!I,1) 6510NEXT 6520: 6530ENDPROC 6540 6550DEF PROCputiconsprite(window%,icon%,T$) 6560pointer%!0=window%:pointer%!4=icon% 6570SYS "XWimp_GetIconState",,pointer% 6580SYS "XWimp_DeleteIcon",,pointer% 6590pointer%!4=window%:$(pointer%+28)=T$:pointer%+=4 6600SYS "XWimp_CreateIcon",,pointer%:SYS "XWimp_ForceRedraw",pointer%!0,pointer%!4,pointer%!8,pointer%!12,pointer%!16:pointer%-=4:ENDPROC 6610 6620DEF PROCcreate_icon(handle,addr,minx,maxx,miny,ht,t$,flags) 6630point%=q%+400 6640point%!0=handle 6650point%!4=minx 6660point%!8=miny 6670point%!12=maxx 6680point%!16=miny+ht 6690point%!20=flags 6700IF addr=0 THEN 6710$(point%+24)=t$ 6720ELSE 6730point%!24=addr 6740point%!28=-1 6750point%!32=32 6760ENDIF 6770SYS "Wimp_CreateIcon",,point% TO i% 6780ENDPROC 6790 6800DEF PROCaddtodesktop 6810type$="" 6820IF q%!40<>&2000 AND q%!40<>&1000 type$=FNgetftype(q%!40) 6830IF q%!40=&2000 THEN type$=FNlastbit(f$) 6840IF q%!40=&1000 type$="directory" 6850spname$=type$ 6860SYS "XWimp_SpriteOp",40,,type$ TO ;flags% 6870IF (flags% AND 1)=1 THEN 6880 IF q%!40=&2000 spname$="application" 6890 IF q%!40<>&2000 AND q%!40<>&1000 spname$="file_xxx" 6900ENDIF 6910fg$=STR$~(fg):bg$=STR$~(bg):flag$=bg$+fg$+"018039":flag=EVAL("&"+flag$) 6920SYS "XWimp_GetPointerInfo",,pointer% 6930pointer%!0-=32:pointer%!4+=32 6940PROCcreate_icon(main%,0,pointer%!0-50,pointer%!0+115,-(1024-(pointer%!4-65)),65,spname$,&4701801A):file$(i%)=f$:x(i%)=pointer%!0:y(i%)=pointer%!4:ftype$(i%)=type$:filetype(i%)=q%!40 6950IF q%!40=&2000 type(i%)=0 ELSE IF q%!40=&1000 type(i%)=1 ELSE type(i%)=2 6960name$=FNlastbit(f$):wid%=(LENname$)*16 6970PROCcreate_icon(main%,0,(pointer%!0-(wid%/2))+30,(pointer%!0+(wid%/2))+30,-(1024-(pointer%!4-115)),36,name$,flag) 6980PROCputiconsprite(main%,i%-1,spname$) 6990SYS "XWimp_ForceRedraw",point%!0,point%!4,point%!8,point%!12,point%!16 7000ENDPROC 7010 7020DEF PROCstaytoggle 7030IF stayopen=FALSE stayopen=TRUE ELSE stayopen=FALSE 7040IF stayopen=TRUE PROCputiconsprite(backdrop%,4,"topton"):pointer%!0=backdrop%:SYS "XWimp_GetWindowState",,pointer%:SYS "XWimp_CreateMenu",,-1:pointer%!28=-1:SYS "XWimp_OpenWindow",,pointer% 7050IF stayopen=FALSE PROCputiconsprite(backdrop%,4,"toptoff") 7060ENDPROC 7070 7080DEF FNrtoz(T%):q$="":WHILE ?T%<>0:q$+=CHR$?T%:T%+=1:ENDWHILE:=q$ 7090 7100DEF FNxy 7110REM Debug FN 7120=STR$pointer%!0+"/"+STR$pointer%!4 7130 7140DEF FNzero(expression) 7150=0-expression 7160 7170DEF FNlastbit(s$) 7180IF s$="<Wimp$Scrap>" ="Tempory" 7190WHILE INSTR(s$,":")>0 7200s$=MID$(s$,INSTR(s$,":")+1) 7210ENDWHILE 7220WHILE INSTR(s$,".")>0 7230s$=MID$(s$,INSTR(s$,".")+1) 7240ENDWHILE 7250=s$ 7260 7270DEF PROCrun(val) 7280IF (val MOD 2=0) val-=1 7290SYS "XWimp_GetPointerInfo",,pointer% 7300x=pointer%!0-32:y=pointer%!4+32 7310CASE type(val) OF 7320WHEN 3 7330CASE file$(val) OF 7340 WHEN "Info" : PROCopenup(infowind%,x,y,650,450) 7350 WHEN "More Info" : PROCopenup(moreinfo%,x,y,800,600) 7360 WHEN "Backdrop" : PROCopenup(backdrop%,x,y,540,450) 7370 WHEN "Save" : PROCopenup(saveas%,x,y,300,180) 7380 WHEN "Object" : PROCopenup(about%,x,y,780,350) 7390 WHEN "Clock" : PROCopenup(clock%,x,y,200,100) 7400 WHEN "Warning" : PROCopenup(warning%,x,y,650,300) 7410 WHEN "Loaded" : PROCopenup(loaded%,x,y,650,300) 7420 WHEN "BackInfo" : PROCopenup(aback%,x,y,780,360) 7430 WHEN "ClockSet" : PROCsetup_sclck:PROCopenup(cset%,x,y,500,250):SYS "XWimp_SetCaretPosition",cset%,2,,,-1,LEN(FNgeticondata(cset%,2)) 7440 OTHERWISE : PROCsetmodlinfo(FNmodl_handle(file$(val))):PROCopenup(FNmodl_handle(file$(val)),x,y,FNmodl_xw(file$(val)),FNmodl_yh(file$(val))) 7450ENDCASE 7460 WHEN 1 : OSCLI("WimpTask Filer_OpenDir "+file$(val)) 7470 WHEN 2 : PROCfile_run(file$(val),filetype(val)) 7480 WHEN 0 : IF INKEY TRUE THEN 7490 OSCLI("WimpTask Filer_OpenDir "+file$(val)) 7500 ENDIF 7510 IF NOT(INKEY TRUE) THEN 7520 OSCLI("WimpTask Run "+file$(val)) 7530 ENDIF 7540 OTHERWISE : PROCmodl_click(type(val),file$(val),x,y) 7550ENDCASE 7560ENDPROC 7570 7580DEF PROCdelete(val,flag) 7590IF locked% ENDPROC 7600IF type(val)>3 AND flag=1 ENDPROC 7610pointer%!0=main% 7620pointer%!4=val 7630SYS "XWimp_GetIconState",,pointer% 7640SYS "XWimp_DeleteIcon",,pointer% 7650SYS "XWimp_ForceRedraw",pointer%!0,pointer%!4,pointer%!8,pointer%!12,pointer%!16 7660pointer%!4=val+1 7670SYS "XWimp_GetIconState",,pointer% 7680SYS "XWimp_DeleteIcon",,pointer% 7690SYS "XWimp_ForceRedraw",pointer%!0,pointer%!4,pointer%!8,pointer%!12,pointer%!16 7700IF clck PROCopenup(clock%,clockx%,clocky%,200,200) 7710file$(val)="":type(val)=0:x(val)=0:y(val)=0:ftype$(val)="":filetype(val)=0 7720ENDPROC 7730 7740DEF PROCshut(handle) 7750pointer%!0=handle 7760SYS "XWimp_CloseWindow",,pointer% 7770ENDPROC 7780 7790DEF PROCset(window,icon) 7800pointer%!0=window 7810pointer%!4=icon 7820pointer%!8=&200000 7830pointer%!12=0 7840SYS "XWimp_SetIconState",,pointer% 7850ENDPROC 7860 7870DEF PROCsavedragbox(window%,icon%) 7880LOCAL x%,y%,ysize% 7890!pointer%=window% 7900SYS "XWimp_GetWindowState",,pointer% 7910ysize%=pointer%!16-pointer%!8 7920x%=pointer%!4 7930y%=pointer%!8 7940IF window%=main% THEN 7950 pointer%!4=icon%+1 7960 SYS "XWimp_GetIconState",,pointer% 7970 ny%=pointer%!12 7980ENDIF 7990pointer%!4=icon% 8000SYS "XWimp_GetIconState",,pointer% 8010sf$=FNlastbit(sf$) 8020pointer%!8+=x% 8030IF window%=main% THEN 8040 pointer%!12=ny%+y%+ysize% 8050ELSE 8060 pointer%!12+=y%+ysize% 8070ENDIF 8080pointer%!16+=x% 8090pointer%!20+=y%+ysize% 8100pointer%!24=0 8110pointer%!28=0 8120pointer%!32=&7FFFFFFF 8130pointer%!36=&7FFFFFFF 8140pointer%!0=0 8150pointer%!4=5 8160SYS "XWimp_DragBox",,pointer% 8170ENDPROC 8180 8190DEF PROCimport 8200SYS "XWimp_GetPointerInfo",,pointer% 8210pointer%!32=pointer%!4 :thirtytwo%=pointer%!32 8220pointer%!28=pointer%!0 :twentyeight%=pointer%!28 8230pointer%!24=pointer%!16 :twentyfour%=pointer%!24 8240pointer%!20=pointer%!12 :twenty%=pointer%!20 8250pointer%!16=1 8260pointer%!12=0 8270pointer%!36=0 8280pointer%!40=0 8290!pointer%=64 8300$(pointer%+44)=sf$ 8310SYS "XWimp_SendMessage",17,pointer%,pointer%!20,pointer%!24 8320myref%=pointer%!8 8330ENDPROC 8340 8350DEF PROCdosave 8360sf$=FNrtoz(q%+44) 8370IF adjust=TRUE PROCdragged ELSE PROCcopy_file 8380ENDPROC 8390 8400DEF PROCtellemoff(e$) 8410LOCAL er% 8420er%=pointer% 8430!er%=0 8440$(er%+4)=e$+CHR$0 8450SYS "XWimp_ReportError",er%,1,"StickyBrd" 8460ENDPROC 8470 8480DEF PROCsave_disc 8490h%=OPENOUT(sf$) 8500PRINT#h%,fg,bg,tiled,clck,emboss,recess,border,twelve,twfour 8510PRINT#h%,clockx%,clocky%,hour,locked% 8520FOR I=0 TO 80 8530PRINT#h%,file$(I),type(I),x(I),y(I),ftype$(I),filetype(I) 8540NEXT 8550CLOSE#h% 8560IF sploaded SYS "OS_SpriteOp",12+256,sprite%,FNtrans("StickyBrdDesktop$Dir")+"."+RIGHT$(FNlastbit(sf$),8)+"SP" 8570PROCmodl_saveconfig 8580SYS "Wimp_CreateMenu",,-1:PROCshut(saveas%) 8590ENDPROC 8600 8610DEF PROCintercept 8620f$=STRING$(250," "):f$="":f$=FNrtoz(q%+44):new_app$=f$ 8630CASE q%!40 OF 8640WHEN &FFD : IF FNlastbit(f$)="!Config" PROCload_new_placeit_file(f$) 8650OTHERWISE : ENDPROC 8660ENDCASE 8670q%!12=q%!8:q%!16=4:SYS "XWimp_SendMessage",17,q% 8680ENDPROC 8690 8700DEF PROCload_new_desktop 8710h%=0:LOCAL ERROR 8720ON ERROR LOCAL PROCtellemoff("Desktop file load error #"+STR$ERL+" ("+REPORT$+")"):ENDPROC 8730SYS "XHourglass_On" 8740PROCdeleteall 8750PROCmodl_clearback(1,sf$) 8760desktop$=sf$ 8770h%=OPENUP(sf$) 8780INPUT#h%,nfg,nbg,tiled,clck,emboss,recess,border,twelve,twfour 8790INPUT#h%,clockx%,clocky%,hour,locked% 8800FOR I=0 TO 80 8810 REM SYS "XHourglass_Percentage",I 8820 INPUT#h%,file$(I),type(I),x(I),y(I),ftype$(I),filetype(I) 8830NEXT 8840CLOSE#h%:h%=0 8850spritefile$=FNtrans("StickyBrdDesktop$Dir")+"."+RIGHT$(FNlastbit(sf$),8)+"SP" 8860j%=OPENUP(spritefile$) 8870t=FALSE:IF j%>0 t=TRUE 8880CLOSE#j% 8890IF t THEN 8900 f$=spritefile$ 8910 PROCloadbackdrop 8920ENDIF 8930FOR I=0 TO 80 8940 IF file$(I)<>"" THEN 8950 IF filetype(I)=&2000 THEN 8960 SYS "XWimp_SpriteOp",40,,ftype$(I) TO ;flags% 8970 IF (flags% AND 1)=1 THEN 8980 IF NOT(INKEY-3) THEN 8990 h%=OPENUP(file$(I)+".!Boot") 9000 IF h%=0 THEN 9010 i%=OPENUP(file$(I)+".!Sprites") 9020 IF i%<>0 CLOSE#i%:OSCLI("IconSprites "+file$(I)+".!Sprites") 9030 IF i%=0 CLOSE#i% 9040 ENDIF 9050 IF h%<>0 THEN 9060 CLOSE#h% 9070 OSCLI("Obey "+file$(I)+".!Boot") 9080 ENDIF 9090 IF h%=0 CLOSE#h% 9100 ENDIF 9110 ENDIF 9120 ENDIF 9130 ENDIF 9140 IF file$(I)<>"" THEN 9150 spname$=ftype$(I) 9160 SYS "XWimp_SpriteOp",40,,spname$ TO ;flags% 9170 IF (flags% AND 1)=1 THEN 9180 IF type(I)=0 spname$="application" 9190 IF type(I)=2 spname$="file_xxx" 9200 ENDIF 9210 PROCcreate_icon(main%,0,x(I)-50,x(I)+115,-(1024-(y(I)-65)),65,spname$,&4701801A) 9220 name$=FNlastbit(file$(I)):wid%=(LENname$)*16 9230 fg$=STR$~(fg):bg$=STR$~(bg):flag$=bg$+fg$+"018039":flag=EVAL("&"+flag$) 9240 PROCcreate_icon(main%,0,(x(I)-(wid%/2))+30,(x(I)+(wid%/2))+30,-(1024-(y(I)-115)),36,name$,flag) 9250 PROCputiconsprite(main%,i%-1,spname$) 9260 ENDIF 9270NEXT 9280PROCmenu(0):PROCgrey_menu(menu%+2200,1) 9290PROCshut(main%) 9300PROCopenup(main%,0,win_maxy%,win_maxx%,(win_maxy%-win_miny%)) 9310PROCrs 9320dummy=q%!8 9330q%!8=nfg:PROCfg 9340q%!8=nbg:PROCbg 9350q%!8=dummy 9360IF tiled=TRUE THEN 9370 PROCputiconsprite(backdrop%,6,"tradioon") 9380 PROCputiconsprite(backdrop%,8,"tradiooff") 9390 ELSE 9400 PROCputiconsprite(backdrop%,6,"tradiooff") 9410 PROCputiconsprite(backdrop%,8,"tradioon") 9420ENDIF 9430REM inform modules 9440PROCmodl_deskstart 9450PROCshut(saveas%) 9460SYS "XHourglass_Off" 9470RESTORE ERROR 9480ENDPROC 9490 9500DEF PROCsetupinfo 9510IF (icon% MOD 2=0) icon%-=1 9520fil$=file$(icon%):IF fil$="<Wimp$Scrap>" fil$="Application Data" 9530IF LEFT$(fil$,1)="*" fil$=FNlastbit(fil$) 9540PROCputicondata(about%,6,fil$) 9550PROCputicondata(about%,7,FNftype(filetype(icon%))) 9560PROCputicondata(about%,8,FNtype(type(icon%))) 9570PROCputicondata(about%,9,desktop$) 9580spname$=ftype$(icon%) 9590SYS "XWimp_SpriteOp",40,,spname$ TO ;flags% 9600IF (flags% AND 1)=1 THEN 9610 IF type(icon%)=0 spname$="application" 9620 IF type(icon%)=2 spname$="file_xxx" 9630ENDIF 9640PROCputiconsprite(about%,11,spname$) 9650ENDPROC 9660 9670DEF FNtype(type) 9680CASE type OF 9690 WHEN 0 : ="Runs Application" 9700 WHEN 1 : ="Opens Directory" 9710 WHEN 2 : ="Executes File" 9720 WHEN 3 : ="Opens Window" 9730 WHEN 4 : ="Executes Command" 9740ENDCASE 9750="Module-Specific" 9760 9770DEF FNftype(type) 9780IF type=&FFFF ="Iconised Window" 9790IF type=&2000 ="Application" 9800IF type=&1000 ="Directory" 9810IF type=&000 ="Module Icon" 9820SYS "XOS_FSControl",&12,,type TO ,,byte1,byte2 9830q$="":!pointer%=byte1:pointer%?4=13:q$+=$pointer% 9840!pointer%=byte2:pointer%?4=13:q$+=$pointer% 9850WHILE RIGHT$(q$,1)=" ":q$=LEFT$(q$,LENq$-1):ENDWHILE 9860type$=STR$~(type) 9870IF LEN(type$)=1 type$="00"+type$ 9880IF LEN(type$)=2 type$="0"+type$ 9890IF RIGHT$(q$,3)=type$ q$="" 9900q$+=" (&"+type$+")" 9910=q$ 9920 9930DEF PROCdragabout(ic%) 9940IF (ic% MOD 2=0) ic%-=1 9950PROCsavedragbox(main%,ic%):file$=file$(ic%):ftype$=ftype$(ic%):filetype=filetype(ic%):iconhandle%=ic%:type=type(ic%) 9960ENDPROC 9970 9980DEF PROCdragend 9990IF clocking%=TRUE clocking%=FALSE:PROCmove_clock:ENDPROC 10000sf$=FNlastbit(file$) 10010PROCimport 10020ENDPROC 10030 10040DEF PROCcopy_file:IF sf$="<Wimp$Scrap>" PROCdragged:ENDPROC 10050PROCset_icon(handle,icon%) 10060IF (icon% MOD 2)=0 icon%-=1 10070move=FALSE:IF INKEY TRUE move=TRUE 10080CASE type(icon%) OF 10090WHEN 0,1,2 10100OSCLI("Set Copy$Options A ~C ~D ~F ~L ~N ~P ~Q R ~S ~T ~V") 10110file1$=sf$ 10120OSCLI("Copy "+file$+" "+file1$) 10130IF FNlastbit(file1$)="Tempory" appdata=FALSE 10140IF move PROCdelete(icon%,0) 10150WHEN 3 : ENDCASE:ENDPROC 10160OTHERWISE : PROCmodl_dragend(file$,sf$,type(icon%)) 10170ENDCASE 10180ENDPROC 10190 10200DEF PROCstring0(a%,a$) 10210$a%=a$:a%?LENa$=0 10220ENDPROC 10230 10240DEF PROCdeleteall 10250FOR I=0 TO 80 10260IF file$(I)<>"" PROCdelete(I,1) 10270NEXT 10280PROCmodl_clearback(0,"") 10290PROCshut(main%) 10300PROCopenup(main%,0,win_maxy%,win_maxx%,(win_maxy%-win_miny%)) 10310ENDPROC 10320 10330DEF PROCwimp_tick(b%,n) 10340b%!(28+24*n)=b%!(28+24*n) EOR &01 10350ENDPROC 10360 10370DEF PROCfg 10380SYS "XHourglass_On" 10390PROCwimp_tick(menu%+600,fg) 10400fg=q%!8 10410PROCwimp_tick(menu%+600,fg) 10420fg$=STR$~(fg) 10430bg$=STR$~(bg) 10440flag$=bg$+fg$+"018039" 10450flag=EVAL("&"+flag$) 10460FOR I=0 TO 80 10470IF file$(I)<>"" THEN 10480pointer%!0=main%:pointer%!4=I 10490SYS "XWimp_DeleteIcon",,pointer%:pointer%!4=I+1 10500SYS "XWimp_DeleteIcon",,pointer% 10510spname$=ftype$(I) 10520SYS "XWimp_SpriteOp",40,,spname$ TO ;flag% 10530IF (flag% AND 1)=1 THEN 10540 IF type(I)=0 spname$="application" 10550 IF type(I)=2 spname$="file_xxx" 10560ENDIF 10570PROCcreate_icon(main%,0,x(I)-50,x(I)+115,-(1024-(y(I)-65)),65,spname$,&4701801A) 10580name$=FNlastbit(file$(I)):wid%=(LENname$)*16 10590PROCcreate_icon(main%,0,(x(I)-(wid%/2))+30,(x(I)+(wid%/2))+30,-(1024-(y(I)-115)),36,name$,flag) 10600PROCputiconsprite(main%,i%-1,spname$) 10610REM SYS "XWimp_ForceRedraw",point%!0,point%!4,point%!8,point%!12,point%!16 10620ENDIF 10630NEXT 10640fg$=STR$~(fg) 10650menuflag$=fg$+FNfgcol(fg)+"000121" 10660menuflag=EVAL("&"+menuflag$):menu%!536=menuflag 10670PROCshut(main%) 10680PROCopenup(main%,0,win_maxy%,win_maxx%,(win_maxy%-win_miny%)) 10690SYS "XHourglass_Off" 10700ENDPROC 10710 10720DEF PROCbg 10730SYS "XHourglass_On" 10740PROCwimp_tick(menu%+1100,bg) 10750bg=q%!8 10760PROCwimp_tick(menu%+1100,bg) 10770fg$=STR$~(fg) 10780bg$=STR$~(bg) 10790flag$=bg$+fg$+"018039" 10800flag=EVAL("&"+flag$) 10810FOR I=0 TO 80 10820IF file$(I)<>"" THEN 10830pointer%!0=main%:pointer%!4=I 10840SYS "XWimp_DeleteIcon",,pointer%:pointer%!4=I+1 10850SYS "XWimp_DeleteIcon",,pointer% 10860spname$=ftype$(I) 10870SYS "XWimp_SpriteOp",40,,spname$ TO ;flags% 10880IF (flags% AND 1)=1 THEN 10890 IF type(I)=0 spname$="application" 10900 IF type(I)=2 spanme$="file_xxx" 10910ENDIF 10920PROCcreate_icon(main%,0,x(I)-50,x(I)+115,-(1024-(y(I)-65)),65,spname$,&4701801A) 10930name$=FNlastbit(file$(I)):wid%=(LENname$)*16 10940PROCcreate_icon(main%,0,(x(I)-(wid%/2))+30,(x(I)+(wid%/2))+30,-(1024-(y(I)-115)),36,FNlastbit(file$(I)),flag) 10950PROCputiconsprite(main%,i%-1,spname$) 10960REM SYS "XWimp_ForceRedraw",point%!0,point%!4,point%!8,point%!12,point%!16 10970ENDIF 10980NEXT 10990bg$=STR$~(bg) 11000menuflag$=bg$+FNfgcol(bg)+"000121" 11010menuflag=EVAL("&"+menuflag$) 11020menu%!560=menuflag 11030PROCshut(main%) 11040PROCopenup(main%,0,win_maxy%,win_maxx%,(win_maxy%-win_miny%)) 11050SYS "XHourglass_Off" 11060ENDPROC 11070 11080DEF FNgetftype(type) 11090type$=STR$~(type) 11100IF LEN(type$)=1 type$="00"+type$ 11110IF LEN(type$)=2 type$="0"+type$ 11120="file_"+type$ 11130 11140DEF FNb:=BGET#h%+BGET#h%*2^8+BGET#h%*2^16+BGET#h%*2^24 11150 11160DEF PROCdragged:LOCAL x%,y%:x%=q%!28:y%=q%!32 11170IF locked% ENDPROC 11180SYS "XHourglass_On":PROCset_icon(handle,icon%):pointer%!0=main%:pointer%!4=iconhandle%:SYS "XWimp_DeleteIcon",,pointer%:pointer%!4=iconhandle%+1:SYS "XWimp_DeleteIcon",,pointer% 11190IF clck PROCopenup(clock%,clockx%,clocky%,200,200) 11200pointer%!0=x%-32:pointer%!4=y%+32 11210spname$=ftype$:SYS "XWimp_SpriteOp",40,,spname$ TO ;flags% 11220IF (flags% AND 1)=1 THEN 11230 IF type=0 spname$="application" 11240 IF type=2 spname$="file_xxx" 11250ENDIF 11260PROCcreate_icon(main%,0,pointer%!0-50,pointer%!0+115,-(1024-(pointer%!4-65)),65,spname$,&4701801A):x(i%)=pointer%!0:y(i%)=pointer%!4:file$(i%)=file$:ftype$(i%)=ftype$:filetype(i%)=filetype 11270fg$=STR$~(fg) 11280bg$=STR$~(bg) 11290flag$=bg$+fg$+"018039" 11300flag=EVAL("&"+flag$):name$=FNlastbit(file$):wid%=(LENname$)*16 11310PROCcreate_icon(main%,0,(pointer%!0-(wid%/2))+30,(pointer%!0+(wid%/2))+30,-(1024-(pointer%!4-115)),36,FNlastbit(file$),flag) 11320PROCputiconsprite(main%,i%-1,spname$) 11330PROCshut(main%) 11340pointer%!0=main%:SYS "XWimp_GetWindowState",,pointer%:pointer%!28=-2:SYS "XWimp_OpenWindow",,pointer% 11350SYS "XHourglass_Off":appdata=FALSE 11360ENDPROC 11370 11380DEF PROCiconise(handle) 11390fg$=STR$~(fg) 11400bg$=STR$~(bg) 11410flag$=bg$+fg$+"018039" 11420flag=EVAL("&"+flag$) 11430SYS "XWimp_GetPointerInfo",,pointer% 11440pointer%!0-=32:pointer%!4+=32 11450PROCcreate_icon(main%,0,pointer%!0-50,pointer%!0+115,-(1024-(pointer%!4-65)),65,"iconise",&4701801A) 11460name$=FNtranslate(handle):wid%=(LENname$)*16 11470PROCcreate_icon(main%,0,(pointer%!0-(wid%/2))+30,(pointer%!0+(wid%/2))+30,-(1024-(pointer%!4-105)),36,FNtranslate(handle),flag) 11480PROCputiconsprite(main%,i%-1,"iconise") 11490i%-=1:file$(i%)=FNtranslate(handle)::ftype$(i%)="iconise":filetype(i%)=&FFFF:x(i%)=pointer%!0:y(i%)=pointer%!4:type(i%)=3 11500SYS "XWimp_ForceRedraw",point%!0,point%!4,point%!8,point%!12,point%!16 11510ENDPROC 11520 11530DEF FNtranslate(handle) 11540CASE handle OF 11550 WHEN infowind% : ="Info" 11560 WHEN moreinfo% : ="More Info" 11570 WHEN backdrop% : ="Backdrop" 11580 WHEN saveas% : ="Save" 11590 WHEN about% : ="Object" 11600 WHEN clock% : ="Clock" 11610 WHEN warning% : ="Warning" 11620 WHEN loaded% : ="Loaded" 11630 WHEN aback% : ="BackInfo" 11640 WHEN cset% : ="ClockSet" 11650ENDCASE 11660=FNmodl_trans(handle) 11670 11680DEF PROCclock 11690IF clck=-1 PROCopenup(clock%,clockx%,clocky%,200,200):ENDPROC 11700IF clck=0 PROCshut(clock%):ENDPROC 11710PROCtellemoff("Clock display error, clock handle "+STR$clock%+", returning to poll loop."):ENDPROC 11720 11730DEF PROCupdate_clock 11740time$=FNgeticondata(clock%,0) 11750CALL mcode2% 11760IF hour=TRUE THEN 11770IF twfour type$="%24:%MI:%SE" ELSE type$="%24:%MI" 11780ELSE 11790IF twfour type$="%12:%MI:%SE" ELSE type$="%12:%MI" 11800ENDIF 11810SYS "OS_ConvertDateAndTime",time_block%,time_buff%,20,type$ 11820buff$=FNrtoz(time_buff%) 11830IF time$<>buff$ PROCputicondata(clock%,0,buff$) 11840ENDPROC 11850 11860DEF PROCwarning 11870PROCopenup(warning%,315,662,650,300) 11880ENDPROC 11890 11900DEF PROCtiled(mode%,sx%,sy%,spname$,x%,y%) 11910spritefile$=f$ 11920PROCputicondata(aback%,3,f$) 11930PROCputicondata(aback%,4,spname$) 11940PROCputicondata(aback%,5,palette$) 11950PROCputicondata(aback%,7,"Tiled") 11960PROCputicondata(aback%,14,STR$mode%) 11970PROCputicondata(aback%,16,STR$x%) 11980PROCputicondata(aback%,18,STR$y%) 11990SYS "XOS_ReadModeVariable",mode%,4 TO ,,var% 12000sx%=sx%<<var% 12010SYS "XOS_ReadModeVariable",mode%,5 TO ,,var% 12020sy%=sy%<<var% 12030PROCshut(main%) 12040PROCopenup(main%,0,win_maxy%,win_maxx%,(win_maxy%-win_miny%)) 12050SYS "XWimp_CreateMenu",,-1 12060ENDPROC 12070 12080DEF PROCgrey_icon(w%,i%) 12090pointer%!0=w% 12100pointer%!4=i% 12110pointer%!8=&400000 12120pointer%!12=0 12130SYS "XWimp_SetIconState",,pointer% 12140ENDPROC 12150 12160DEF PROCsetmenuitem 12170LOCAL ic% 12180ic%=q%!16 12190IF (ic% MOD 2=0) ic%-=1 12200ft$="File":tt$="File" 12210CASE type(ic%) OF 12220WHEN 0 : ft$="App.":tt$="Application" 12230 IF FNas(menu%+300,2)=1 PROCgrey_menu(menu%+300,2) 12240WHEN 1 : ft$="Dir.":tt$="Directory" 12250 IF FNas(menu%+300,2)=1 PROCgrey_menu(menu%+300,2) 12260WHEN 2 : ft$="File":tt$="File" 12270 IF FNas(menu%+300,2)=1 PROCgrey_menu(menu%+300,2) 12280WHEN 3 : ft$="Win.":tt$="Window" 12290 IF FNas(menu%+300,2)=0 PROCgrey_menu(menu%+300,2) 12300OTHERWISE : ft$="Obj.":tt$="Object" 12310 IF FNas(menu%+300,2)=0 PROCgrey_menu(menu%+300,2) 12320ENDCASE 12330$object%=ft$+" '"+FNlastbit(file$(ic%))+"'" 12340$(menu%+300)=tt$ 12350IF FNas(menu%,1)=1 PROCgrey_menu(menu%,1) 12360IF FNas(menu%+400,1)=1 PROCgrey_menu(menu%+400,1) 12370ENDPROC 12380 12390DEF PROCset_icon(w%,i%) 12400pointer%!0=w% 12410pointer%!4=i% 12420pointer%!8=&200000 12430pointer%!12=0 12440SYS "XWimp_SetIconState",,pointer% 12450ENDPROC 12460 12470DEF PROCsendhelp 12480q%!12=q%!8:q%!16=&503:help%=q%+20 12490help%=FNhelp(q%!32,q%!36,help%):IF help%=0 ENDPROC 12500?help%=0 12510!q%=(help%+4-q%)ANDNOT3 12520SYS "XWimp_SendMessage",17,q%,q%!4 12530ENDPROC 12540 12550DEF FNhelp(w%,i%,h%) 12560$h%="" 12570CASE w% OF 12580 WHEN infowind% 12590 CASE i% OF 12600 WHEN -1,0,1,2,3,4,5,6,7,8 12610 $h%="This is the Info Window.|MIt provides information on !StickyBrd." 12620 OTHERWISE : SYS "XInterface_SendHelp",,q%:=0 12630 ENDCASE 12640 WHEN moreinfo% 12650 CASE i% OF 12660 WHEN -1,0,1,2,3,4,5,6,7,8,9,10,11,12,13 12670 $h%="This window gives more information on !StickyBrd." 12680 OTHERWISE : SYS "XInterface_SendHelp",,q%:=0 12690 ENDCASE 12700 WHEN backdrop% 12710 CASE i% OF 12720 WHEN -1,0,1,3,7,9 12730 $h%="This is the 'Load Backdrop' window.|MUse this window to load a new backdrop." 12740 WHEN 2 12750 $h%="This is the 'Load Sprite' icon.|MDrag a Sprite file to this icon to load it." 12760 WHEN 4 12770 $h%="This is the 'Stay Open' icon.|MClick it to keep the window open." 12780 WHEN 6 12790 $h%="This is the 'Tiled' radio button.|MClick on it to select 'Tiled' backdrops." 12800 WHEN 8 12810 $h%="This is the 'Centred' radio button.|MClick on it to select 'Centred' backdrops." 12820 OTHERWISE : SYS "XInterface_SendHelp",,q%:=0 12830 ENDCASE 12840 WHEN main% 12850 CASE i% OF 12860 WHEN 0 : $h%="This is the desktop backdrop.|MIt is now `sticky� and will accept directories, applications, and files.|MDrag these to the desktop backdrop to add them to it." 12870 OTHERWISE : ic%=i% 12880 IF (ic% MOD 2=0) ic%-=1 12890 $h%="This is the icon for `" 12900 $h%+=FNlastbit(file$(ic%)) 12910 $h%+="�.|M" 12920 $h%+="Click on it to " 12930 $h%+=FNfindtype(type(ic%)) 12940 $h%+="." 12950 ENDCASE 12960 WHEN about% 12970 $h%="This is the 'Object Information' window.|MIt provides information about the object the pointer is currently over." 12980 WHEN saveas% 12990 CASE i% OF 13000 WHEN -1 13010 $h%="This is the 'Save' window.|MUse it to save the current state of the desktop." 13020 OTHERWISE 13030 SYS "XInterface_SendHelp",,q%:=0 13040 ENDCASE 13050 WHEN warning% 13060 CASE i% OF 13070 WHEN 4,5 : SYS "XInterface_SendHelp",,q%:=0 13080 OTHERWISE : $h%="This is the 'Warning' window.|MIt indicates that you already have some application data saved into !StickyBrd." 13090 ENDCASE 13100 WHEN loaded% 13110 CASE i% OF 13120 WHEN 5,6 : SYS "XInterface_SendHelp",,q%:=0 13130 OTHERWISE : $h%="This is the 'Loaded' window.|MIt shows that !StickyBrd is loaded, and displays the copyright (�) message." 13140 ENDCASE 13150 SYS "XInterface_SendHelp",,q%:=0 13160 WHEN main1% 13170 $h%="This is the desktop backdrop.|MThe 'real' backdrop is currently 'hidden'.|MSelect 'Restore' from the 'Options' menu to view it." 13180 WHEN aback% 13190 $h%="This window gives information on the current backdrop.|MIt shows the sprite file, sprite name, determines whether it has a palette, and tells you whether the backdrop is tiled or centred." 13200 WHEN cset% 13210 CASE i% OF 13220 WHEN 2,3,8 : SYS "XInterface_SendHelp",,q%:=0 13230 WHEN 4 : $h%="This is the 'Up' icon.|MClick it to increase the hours by one." 13240 WHEN 5 : $h%="This is the 'Down' icon.|MClick it to decrease the hours by one." 13250 WHEN 6 : $h%="This is the 'Up' icon.|MClick it to increase the minutes by one." 13260 WHEN 7 : $h%="This is the 'Down' icon.|MClick it to decrease the minutes by one." 13270 OTHERWISE : $h%="This is the 'Set time' window.|MUse it to set the current time." 13280 ENDCASE 13290 OTHERWISE 13300 $h%=FNmodl_help(w%,i%) 13310ENDCASE 13320=h%+LEN($h%) 13330 13340DEF FNfindtype(type) 13350CASE type OF 13360 WHEN 0 : ="run the application" 13370 WHEN 1 : ="open the directory" 13380 WHEN 2 : ="execute the file" 13390 WHEN 3 : ="open the window" 13400 WHEN 4 : ="execute the command" 13410ENDCASE 13420="perform an operation" 13430 13440DEF PROCsetclearmenu 13450$object%="File ''" 13460IF FNas(menu%,1)=0 PROCgrey_menu(menu%,1) 13470IF FNas(menu%+400,1)=0 PROCgrey_menu(menu%+400,1) 13480ENDPROC 13490 13500DEF FNas(b%,n%) 13510=-((b%!(28+8+24*n%) AND &400000)=&400000) 13520 13530DEF PROCgrey_menu(b%,n%) 13540b%!(28+8+24*n%)=b%!(28+8+24*n%)EOR&400000 13550ENDPROC 13560 13570DEF PROCupdate_backdrop 13580pointer%!0=main% 13590SYS "Wimp_GetWindowOutline",,pointer% 13600SYS "Wimp_ForceRedraw",main%,pointer%!4,pointer%!16-44,pointer%!12,pointer%!16 13610ENDPROC 13620 13630DEF PROCbring_to_top(handle%) 13640pointer%!0=handle% 13650SYS "XWimp_GetWindowInfo",,pointer% 13660pointer%!28=-2 13670SYS "XWimp_OpenWindow",,pointer% 13680ENDPROC 13690 13700DEF PROCset_clock_flags(e,r,b,twe,twf,h) 13710emboss=e:recess=r:twelve=twe:twfour=twf:border=b:hour=h 13720ENDPROC 13730 13740DEF PROCsetup_sclck 13750PROCputicondata(cset%,2,MID$(TIME$,17,2)) 13760PROCputicondata(cset%,3,MID$(TIME$,20,2)) 13770ENDPROC 13780 13790DEF PROCaddh(addicon%) 13800current=VAL(FNgeticondata(cset%,addicon%)) 13810current+=1 13820IF current>24 current=0 13830IF current<0 current=24 13840current$=STR$current:IF LENcurrent$=1 current$="0"+current$ 13850PROCputicondata(cset%,addicon%,current$) 13860ENDPROC 13870 13880DEF PROCsubh(subicon%) 13890current=VAL(FNgeticondata(cset%,subicon%)) 13900current-=1 13910IF current>24 current=0 13920IF current<0 current=24 13930current$=STR$current:IF LENcurrent$=1 current$="0"+current$ 13940PROCputicondata(cset%,subicon%,current$) 13950ENDPROC 13960 13970DEF PROCaddm(addicon%) 13980current=VAL(FNgeticondata(cset%,addicon%)) 13990current+=1 14000IF current>60 current=0 14010IF current<0 current=60 14020current$=STR$current:IF LENcurrent$=1 current$="0"+current$ 14030PROCputicondata(cset%,addicon%,current$) 14040ENDPROC 14050 14060DEF PROCsubm(subicon%) 14070current=VAL(FNgeticondata(cset%,subicon%)) 14080current-=1 14090IF current>60 current=0 14100IF current<0 current=60 14110current$=STR$current:IF LENcurrent$=1 current$="0"+current$ 14120PROCputicondata(cset%,subicon%,current$) 14130ENDPROC 14140 14150DEF PROCsettime(hour$,minute$) 14160time$="" 14170time$=LEFT$(TIME$,16)+hour$+":"+minute$+":"+"00" 14180TIME$=time$:PROCshut(cset%) 14190ENDPROC 14200 14210DEF PROCrs 14220pointer%!0=clock% 14230pointer%!4=0 14240SYS "XWimp_GetIconState",,pointer% 14250pointer%!8=0:pointer%!12=0 14260IF emboss $(pointer%!32)="z0":pointer%!24=&17000139 14270IF recess $(pointer%!32)="z4":pointer%!24=&17000139 14280IF border $(pointer%!32)="z1":pointer%!24=&17000139 14290SYS "XWimp_SetIconState",,pointer% 14300pointer%!0=clock% 14310SYS "XWimp_GetWindowState",,pointer% 14320PROCshut(clock%) 14330pointer%!28=-2 14340IF clck SYS "XWimp_OpenWindow",,pointer% 14350ENDPROC 14360 14370DEF FNfract(val) 14380t$=STR$(val DIV 100)+"."+STR$(val MOD 100) 14390IF LENt$=3 t$+="0" 14400=t$ 14410 14420DEF FNmodl_init(tname$,tpurp$,tauth$,tver$,pver,menblk%) 14430IF modlptr=20 PROCtellemoff("Extention module loading error: limit reached, no more modules will be loaded."):ENDPROC 14440IF pver>80 PROCtellemoff("Extension module "+tname$+" requires !StickyBrd manager "+FNfract(pver)+" or later."):ENDPROC 14450modl$(modlptr)=FNlower(tname$):modl(modlptr)=menblk% 14460modli$(modlptr)=tname$:modlp$(modlptr)=tpurp$ 14470modla$(modlptr)=tauth$:modlv$(modlptr)=tver$:modlptr+=1 14480SYS "XWimp_CreateWindow",,modlinfo% TO taskhand% 14490modlinf(modlptr-1)=taskhand% 14500PROCaddtomenu(tname$,menblk%) 14510modl(modlptr-1)!32=taskhand% 14520=taskhand% 14530 14540DEF PROCaddtomenu(tn$,men%) 14550IF FNas(menu%,6)=1 PROCgrey_menu(menu%,6) 14560mblk%=modlmenu% 14570flags=&7000021 14580mlen%=0:FOR I=0 TO (modlptr-1) 14590IF LENmodl$(I)>mlen% mlen%=(LENmodl$(I))+1:NEXT:mlen%+=1 14600PROCheader("Modules",mlen%) 14610FOR I=0 TO (modlptr-1) 14620PROCentry(&00,modl(I),flags,FNcapital(modl$(I))) 14630NEXT 14640mblk%!-24=mblk%!-24 OR &80 14650ENDPROC 14660 14670DEF FNbd_hand:=main% 14680 14690DEF PROCload_modls 14700h%=OPENUP("<StickyBrdExt$Dir>.AutoRun") 14710REPEAT 14720buff$=GET$#h% 14730IF LEFT$(buff$,1)<>"|" THEN 14740 IF LEFT$(buff$,5)="{run}" THEN 14750 buff$=FNstrip(buff$) 14760 PROCload_modl(buff$) 14770 ENDIF 14780ENDIF 14790UNTIL buff$="{end}" 14800CLOSE#h% 14810ENDPROC 14820 14830DEF PROCload_modl(file$) 14840LIBRARY "<StickyBrdExt$Dir>."+buff$+".Module" 14850t%=EVAL("FN"+buff$+"_init") 14860ENDPROC 14870 14880DEF FNstrip(s$) 14890s$=RIGHT$(s$,(LENs$)-6) 14900s$=LEFT$(s$,(LENs$)-1) 14910=s$ 14920 14930DEF PROCpass_null 14940IF modlptr=0 ENDPROC 14950FOR K=0 TO (modlptr-1) 14960t%=EVAL("FN"+modl$(K)+"_event(0,q%)") 14970NEXT K 14980ENDPROC 14990 15000DEF FNlower(text$) 15010$pointer%=text$:ptr%=0:REPEAT ptr%?pointer%=ptr%?pointer% OR &20:ptr%+=1:UNTIL ptr%?pointer%<33 15020=$pointer% 15030 15040DEF PROCmodl_sendmenu 15050modlflag=q%!4:IF q%!8=-1 ENDPROC 15060start=4:REPEAT q%!(start-4)=q%!(start+4):start+=4:UNTIL q%!(start-4)=-1 15070t%=EVAL("FN"+modl$(modlflag)+"_event(1,q%)") 15080ENDPROC 15090 15100DEF PROCmodl_quit 15110FOR K=0 TO (modlptr-1) 15120t%=EVAL("FN"+modl$(K)+"_event(13,q%)") 15130NEXT K 15140ENDPROC 15150 15160DEF FNmodl_help(w%,i%) 15170text$="" 15180pointer%!0=w%:pointer%!4=i% 15190FOR K=0 TO (modlptr-1) 15200t%=EVAL("FN"+modl$(K)+"_event(3,pointer%)") 15210IF $t%<>"" text$=$t% 15220pointer%!0=w%:pointer%!4=i% 15230NEXT K 15240IF text$="" text$="No help availible on this window" 15250=text$ 15260 15270DEF PROCmodl_click(typ,fil$,x,y) 15280pointer%!0=x:pointer%!4=y:pointer%!8=typ:$(pointer%+12)=fil$ 15290FOR K=0 TO (modlptr-1) 15300t%=EVAL("FN"+modl$(K)+"_event(4,pointer%)") 15310pointer%!0=x:pointer%!4=y:pointer%!8=typ:$(pointer%+12)=fil$ 15320NEXT K 15330ENDPROC 15340 15350DEF PROCmodl_mclick(h,i,b) 15360pointer%!0=h:pointer%!4=i:pointer%!8=b 15370FOR K=0 TO (modlptr-1) 15380t%=EVAL("FN"+modl$(K)+"_event(5,pointer%)") 15390pointer%!0=h:pointer%!4=i:pointer%!8=b 15400NEXT K 15410ENDPROC 15420 15430DEF PROCputondesktop(spn$,x,y,t,t$,l) 15440LOCAL fg$,bg$,flag$,flag 15450fg$=STR$~(fg):bg$=STR$~(bg):flag$=bg$+fg$+"018039" 15460flag=EVAL("&"+flag$) 15470PROCcreate_icon(main%,0,x-50,x+115,-(1024-(y-65)),65,spn$,&4701801A) 15480file$(i%)=t$:x(i%)=x:y(i%)=y:ftype$(i%)=spn$:filetype(i%)=&000:type(i%)=t 15490t1$="" 15500IF l=1 t1$=FNlastbit(t$) ELSE t1$=t$:wid%=(LENt1$)*16 15510PROCcreate_icon(main%,0,(x-(wid%/2))+30,(x+(wid%/2))+30,-(1024-(y-115)),36,t1$,flag) 15520PROCputiconsprite(main%,i%-1,spn$) 15530SYS "XWimp_ForceRedraw",point%!0,point%!4,point%!8,point%!12,point%!16 15540ENDPROC 15550 15560DEF PROCmodl_slab(h,i,b) 15570pointer%!12=h 15580pointer%!16=i 15590pointer%!8=b 15600SYS "XInterface_SlabButton",,pointer% 15610pointer%!8=0 15620SYS "XInterface_SlabButton",,pointer% 15630ENDPROC 15640 15650DEF FNfirstbit(s$) 15660ptr=0:REPEAT:t$=MID$(s$,ptr,1) 15670IF t$="." ptr-=1:GOTO 15690 15680ptr+=1 15690UNTIL t$="." 15700=LEFT$(s$,ptr) 15710 15720DEF FNmodl_trans(h) 15730t$="" 15740pointer%!0=h 15750FOR K=0 TO (modlptr-1) 15760t%=EVAL("FN"+modl$(K)+"_event(6,pointer%)") 15770IF $t%<>"" t$=$t% 15780pointer%!0=h 15790NEXT K 15800=t$ 15810 15820DEF FNmodl_handle(t$) 15830handle%=0 15840$pointer%=t$ 15850FOR K=0 TO (modlptr-1) 15860t%=EVAL("FN"+modl$(K)+"_event(7,pointer%)") 15870IF t%<>0 handle%=t% 15880$pointer%=t$ 15890NEXT K 15900=handle% 15910 15920DEF FNmodl_xw(t$) 15930xw%=0 15940$pointer%=t$ 15950FOR K=0 TO (modlptr-1) 15960t%=EVAL("FN"+modl$(K)+"_event(8,pointer%)") 15970IF t%<>0 xw%=t% 15980$pointer%=t$ 15990NEXT K 16000=xw% 16010 16020DEF FNmodl_yh(t$) 16030yh%=0 16040$pointer%=t$ 16050FOR K=0 TO (modlptr-1) 16060t%=EVAL("FN"+modl$(K)+"_event(9,pointer%)") 16070IF t%<>0 yh%=t% 16080$pointer%=t$ 16090NEXT K 16100=yh% 16110 16120DEF FNcapital(s$) 16130t$=RIGHT$(s$,(LENs$)-1) 16140i$=LEFT$(s$,1) 16150i$=CHR$(ASC(i$) EOR &20) 16160=i$+t$ 16170 16180DEF FNexists(ty) 16190flag=0 16200FOR I=0 TO 80 16210IF file$(I)<>"" 16220 IF type(I)=ty flag=I 16230ENDIF 16240NEXT 16250=flag 16260 16270DEF PROCmodl_dragend(f$,f1$,t) 16280FOR K=0 TO (modlptr-1) 16290pointer%!0=t 16300$(pointer%+4)=f$ 16310$(pointer%+260)=f1$ 16320t%=EVAL("FN"+modl$(K)+"_event(10,pointer%)") 16330NEXT K 16340ENDPROC 16350 16360DEF PROCmodl_dataload(f$,w,i) 16370FOR K=0 TO (modlptr-1) 16380pointer%!0=w:pointer%!4=i:$(pointer%+8)=f$ 16390t%=EVAL("FN"+modl$(K)+"_event(11,pointer%)") 16400NEXT K 16410ENDPROC 16420 16430DEF PROCmodl_delete(icon%,type%) 16440FOR K=0 TO (modlptr-1) 16450pointer%!0=icon%:pointer%!4=type% 16460t%=EVAL("FN"+modl$(K)+"_event(12,pointer%)") 16470NEXT K 16480ENDPROC 16490 16500DEF PROCmodl_saveconfig 16510FOR K=0 TO (modlptr-1) 16520t%=EVAL("FN"+modl$(K)+"_event(2,pointer%)") 16530NEXT K 16540ENDPROC 16550 16560DEF PROCmodl_redraw 16570FOR K=0 TO (modlptr-1) 16580t%=EVAL("FN"+modl$(K)+"_event(14,q%)") 16590NEXT K 16600ENDPROC 16610 16620DEF FNmodl_interface(r0,r1%) 16630CASE r0 OF 16640 WHEN 0 : PROCtellemoff("Fatal; "+$r1%) 16650 PROCmodl_quit 16660 quit%=TRUE 16670 WHEN 1 : PROCtellemoff($r1%) 16680 =0 16690 WHEN 2 : PROCshut(main%) 16700 PROCopenup(main%,0,win_maxy%,win_maxx%,(win_maxy%-win_miny%)) 16710 =0 16720 WHEN 3 : IF sploaded pointer%!0=1 ELSE pointer%!0=0 16730 IF tiled pointer%!4=1 ELSE pointer%!4=0 16740 =pointer% 16750 WHEN 4 : PROCputondesktop($r1%,r1%!24,r1%!28,r1%!32,$(r1%+12),r1%!36) 16760 =0 16770 WHEN 5 : PROCdelete(!r1%,0) 16780 =0 16790 WHEN 6 : SYS "XWimp_OpenMenu",,menu%,!r1%,r1%!4 16800 =0 16810 WHEN 7 : PROCdragabout(!r1%) 16820 =0 16830 WHEN 8 : PROCset_icon(!r1%) 16840 =0 16850 WHEN 9 : OSCLI("Filer_OpenDir "+FNdir(file$(!r1%))) 16860 =0 16870 WHEN 10 : PROCmodl_slab(!r1%,r1%!4,r1%!8) 16880 =0 16890 WHEN 11 : =FNexists(!r1%) 16900 WHEN 12 : res0%=r0:res1%=r1% 16910 FOR K=0 TO (modlptr-1) 16920 t%=EVAL("FN"+modl$(K)+"_message(!res1%,res1%!4)") 16930 NEXT 16940 =0 16950 WHEN 13 : PROCputicondata(r1%!0,r1%!4,$(r1%+8)) 16960 =0 16970 WHEN 14 : $pointer%=FNgeticondata(!r1%,r1%!4) 16980 =pointer% 16990 WHEN 15 : $pointer%=FNlastbit($r1%) 17000 =pointer% 17010 WHEN 16 : $pointer%=FNdir($r1%) 17020 =pointer% 17030 WHEN 17 : PROCputiconsprite(!r1%,r1%!4,$(r1%+8)) 17040 =0 17050ENDCASE 17060=0 17070 17080DEF FNdir(s$) 17090sptr=LENs$ 17100REPEAT:g$=MID$(s$,sptr,1):IF g$="." GOTO 17110 ELSE sptr-=1 17110UNTIL g$="." 17120=LEFT$(s$,sptr-1) 17130 17140DEF PROCmodl_clearback(type,file$) 17150FOR K=0 TO (modlptr-1) 17160pointer%!0=type:$(pointer%+4)=file$ 17170t%=EVAL("FN"+modl$(K)+"_event(15,pointer%)") 17180NEXT K 17190ENDPROC 17200 17210DEF PROCmodl_deskstart 17220FOR K=0 TO (modlptr-1) 17230t%=EVAL("FN"+modl$(K)+"_event(16,pointer%)") 17240NEXT K 17250ENDPROC 17260 17270DEF PROCmenu_message 17280IF q%!32=6 THEN 17290 PROCputicondata(modlinf(q%!36),4,modli$(q%!36)) 17300 PROCputicondata(modlinf(q%!36),5,modlp$(q%!36)) 17310 PROCputicondata(modlinf(q%!36),6,modla$(q%!36)) 17320 PROCputicondata(modlinf(q%!36),7,modlv$(q%!36)) 17330 SYS "XWimp_CreateSubMenu",,q%!20,q%!24,q%!28 17340ENDIF 17350ENDPROC 17360 17370DEF PROCsetmodlinfo(handle) 17380modlnumber=0:infoptr=0:REPEAT 17390IF modlinf(infoptr)=handle THEN modlnumber=infoptr 17400infoptr+=1 17410UNTIL infoptr=(modlptr+1) 17420PROCputicondata(handle,4,modli$(modlnumber)) 17430PROCputicondata(handle,5,modlp$(modlnumber)) 17440PROCputicondata(handle,6,modla$(modlnumber)) 17450PROCputicondata(handle,7,modlv$(modlnumber)) 17460ENDPROC 17470 17480DEF FNrmv(r0,r1) 17490SYS "XOS_ReadModeVariable",r0,r1 TO ,,r20 17500=r20 17510 17520DEF PROCstring_at_address(name$,RETURN num%) 17530SYS "OS_SpriteOp",256+24,sprite%,name$ TO ,,num% 17540ENDPROC 17550: 17560REM ** READING IN !PLACEIT FILES ** 17570 17580DEF FNnext_byte 17590offset%+=1 17600=(config_file%?offset%) 17610 17620DEF FNbyte(offset%) 17630=(config_file%?offset%) 17640 17650DEF FNword(offset%) 17660=(config_file%!offset%) 17670 17680DEF FNstring(offset%) 17690LOCAL str$ 17700str$="" 17710WHILE (config_file%?offset%)>31 17720 str$+=CHR$(config_file%?offset%) 17730 offset%+=1 17740ENDWHILE 17750=str$ 17760 17770DEF PROCget_placeit_icon(icon%) 17780LOCAL ptr% 17790ptr%=length_options% 17800i%=0 17810WHILE i%<icon% 17820 ptr%+=FNword(ptr%+size_offset)-4 17830 i%+=1 17840ENDWHILE 17850iconhandle%=FNbyte(ptr%+handle_offset) 17860x_coord% =FNword(ptr%+x_offset) 17870y_coord% =FNword(ptr%+y_offset) 17880filetype% =FNword(ptr%+filetype_offset) 17890leafname$ =FNstring(ptr%+FNword(ptr%+leafname_offset)-4) 17900spritename$=FNstring(ptr%+sprite_offset) 17910iconselect%=FNbyte(ptr%+select_offset) 17920filename$ =FNstring(ptr%+filename_offset) 17930ENDPROC 17940 17950DEF PROCload_new_placeit_file(f$) 17960PROCdeleteall:PROCpurge1 17970PROCmodl_clearback(1,f$) 17980SYS "XOS_File",16,f$,config_file%,0 17990offset%=-1 18000size_offset =0 18010leafname_offset=4 18020handle_offset =8 18030select_offset =9 18040x_offset =12 18050y_offset =16 18060sprite_offset =20 18070filetype_offset=36 18080filename_offset=40 18090 18100version%=FNnext_byte:IF version%<>5 PROCtellemoff("Can't handle !PlaceIt config file other than version 5"):ENDPROC 18110nfg =FNnext_byte 18120nbg =FNnext_byte 18130dc_flag%=FNnext_byte 18140locked% =FNnext_byte 18150backgnd%=FNnext_byte 18160backtyp%=FNnext_byte 18170icons% =FNnext_byte 18180length_options%=offset%+1 18190FOR I=0 TO icons%-1 18200PROCget_placeit_icon(I):spritename$=RIGHT$(spritename$,LENspritename$-1) 18210PROCcreate_icon(main%,0,(x_coord%-50)+20,(x_coord%+115)+20,-(y_coord%-65)+100,65,spritename$,&4701801A):file$(i%)=filename$:x(i%)=x_coord%+20:y(i%)=y_coord%+100:ftype$(i%)=spritename$:filetype(i%)=filetype% 18220IF filetype%=&2000 type(i%)=0 ELSE IF filetype%=&1000 type(i%)=1 ELSE type(i%)=2 18230wid%=(LENleafname$)*16 18240PROCcreate_icon(main%,0,(x_coord%-(wid%/2))+60,(x_coord%+(wid%/2))+60,-(y_coord%-115)+100,36,leafname$,&47018039) 18250PROCputiconsprite(main%,i%-1,spritename$) 18260NEXT 18270IF backgnd%=1 THEN 18280 f1$=f$ 18290 f$=FNleafname(f$):f$+=".Background" 18300 IF backtyp%=1 tiled=TRUE ELSE tiled=FALSE 18310 PROCloadbackdrop 18320 f$=f1$ 18330ENDIF 18340PROCshut(main%) 18350PROCopenup(main%,0,win_maxy%,win_maxx%,(win_maxy%-win_miny%)) 18360q%!8=nfg:PROCfg 18370q%!8=nbg:PROCbg 18380desktop$=f$ 18390ENDPROC 18400 18410DEF FNleafname(s$) 18420WHILE RIGHT$(s$,1)<>"." 18430s$=LEFT$(s$,LENs$-1) 18440ENDWHILE 18450=LEFT$(s$,LENs$-1) 18460 18470DEF PROCmove_clock 18480IF locked% ENDPROC 18490SYS "Wimp_GetPointerInfo",,pointer% 18500clockx%=pointer%!0-60:clocky%=pointer%!4+10 18510PROCopenup(clock%,clockx%,clocky%,200,200) 18520ENDPROC 18530 18540DEF PROCmess_ack 18550IF q%!16=5 THEN 18560 SYS "XWimp_StartTask","Run "+runfile$ 18570ENDIF 18580ENDPROC 18590 18600DEF PROCfile_run(f$,ft) 18610runfile$=f$ 18620!pointer%=(48+LENrunfile$)ANDNOT3 18630pointer%!12=3 18640pointer%!16=5 18650pointer%!36=-2 18660pointer%!40=ft 18670$(pointer%+44)=runfile$+CHR$0 18680SYS "Wimp_SendMessage",18,pointer%,0 18690ENDPROC 18700 18710DEF FNtrans(var$) 18720FOR I=0 TO 100:pointer%?I=0:NEXT 18730SYS "OS_ReadVarVal",var$+CHR$0,pointer%,400,0 18740=FNrtoz(pointer%) 18750 18760DEF PROCtitlemenu 18770LOCAL x%,y%,z%,title$,q$ 18780MOUSE x%,y%,z% 18790IF z%<>2 THEN ENDPROC 18800SYS "Wimp_GetPointerInfo",,q% 18810IF q%!16<>-4 THEN ENDPROC 18820q%!0=q%!12:SYS "Wimp_GetWindowInfo",,q% 18830IF (q%!60 AND 1<<8) THEN 18840 title$=FNrtoz(q%!76) 18850ELSE 18860 title$=FNrtoz(q%+76) 18870ENDIF 18880IF INSTR(title$,"::")=0 AND INSTR(title$,"#")=0 THEN ENDPROC 18890IF INSTR(title$,"$")=0 THEN ENDPROC 18900mblk%=filemen% 18910IF INSTR(title$,"::")>0 THEN 18920 PROCheader(LEFT$(title$,INSTR(title$,"::")-1),11) 18930ELSE 18940 PROCheader(LEFT$(title$,INSTR(title$,"#")-1),11) 18950ENDIF 18960filepath$=LEFT$(title$,INSTR(title$,".")-1) 18970title$=RIGHT$(title$,LENtitle$-(INSTR(title$,"."))) 18980q$="":FOR I%=1 TO LENtitle$ 18990q$+=MID$(title$,I%,1) 19000IF MID$(title$,I%,1)="." THEN 19010 PROCentry(&00,-1,&7000021,LEFT$(q$,LENq$-1)) 19020 q$="" 19030ENDIF 19040NEXT 19050PROCentry(&80,-1,&7000021,q$) 19060SYS "Wimp_GetPointerInfo",,q% 19070handle=&FFFFFFFF 19080SYS "Wimp_CreateMenu",,filemen%,q%!0-64,q%!4-10 19090ENDPROC
!� >NewPD.!StickyBrd.!RunImage � Public Domain � By David J. Seery (� � David J. Seery 1992 2� Current version: 0.80 < Fș "XHourglass_On" Pi� � x%=�error("Fatal Error (type "+ß+"/internal error code "+Þ+") "+�$+"...Re-run & try again",1):� Z8� q% 1200,ind% &400,ind2% &400,menu% 2600,ind3% &400 dF� ind4% &400,pointer% 500,file$(80),type(80),ind5% &500,ind6% &600 n4� x(80),y(80),ftype$(80),filetype(80),ind8% &400 x)� ind9% &500,ind10% &400,filemen% 512 �7� object% 20,ind14% &600,openparent% 20,main_w% 800 �;� ind15% &500,fgb% 20,bgb% 20,ind16% &350,modlinfo% 800 �:� modlmenu% 2000:� plenty of space for module menu (!) �D� modl$(20),modl(20),modli$(20),modlp$(20),modla$(20),modlv$(20) �:� modlinf(20),mcode% 300,config_file% 3000,mcode2% 100 �"� time_block% 20,time_buff% 20 �P� sprite% &8500:sprite%!0=&8500:sprite%!8=16:ș "XOS_SpriteOp",9+256,sprite% �� cols% 16,scale% 16 ��stayopen=�:spritefile$="":desktop$="":f$="":clockhandle%=-1:clck=�:appdata=�:tiled=�:adjust=�:sploaded=�:modlptr=0:clockx%=1079:clocky%=1023:clocking%=�:new_app$="":file$()="":turbo%=�:locked%=� �$q%="TASK" �?ș "XWimp_Initialise",200,!q%,"StickyBrd" � wimpver%,taskh% �� wimpver%<200 �tellemoff("Fatal Error (type -1): Wimp Manager out of date (requires 2.00 or later)"):ș "XWimp_CloseDown":� �%ș "XInterface_Initialise",taskh% ;ș "XWimp_OpenTemplate",,"<StickyBrdRes$Dir>.Templates" =ș "XWimp_LoadTemplate",,q%,ind8%,ind8%+&400,-1,"clock",0 (ș "XWimp_CreateWindow",,q% � clock% ":ș "XWimp_LoadTemplate",,q%,ind%,ind%+&400,-1,"info",0 ,+ș "XWimp_CreateWindow",,q% � infowind% 6@ș "XWimp_LoadTemplate",,q%,ind2%,ind2%+&400,-1,"moreinfo",0 @+ș "XWimp_CreateWindow",,q% � moreinfo% JAș "XWimp_LoadTemplate",,main_w%,ind3%,ind3%+&400,-1,"main",0 T,ș "XWimp_CreateWindow",,main_w% � main% ^-ș "XWimp_CreateWindow",,main_w% � main1% h@ș "XWimp_LoadTemplate",,q%,ind4%,ind4%+&400,-1,"backdrop",0 r+ș "XWimp_CreateWindow",,q% � backdrop% |>ș "XWimp_LoadTemplate",,q%,ind5%,ind5%+&500,-1,"saveas",0 �)ș "XWimp_CreateWindow",,q% � saveas% �=ș "XWimp_LoadTemplate",,q%,ind6%,ind6%+&600,-1,"about",0 �(ș "XWimp_CreateWindow",,q% � about% �?ș "XWimp_LoadTemplate",,q%,ind9%,ind9%+&500,-1,"warning",0 �*ș "XWimp_CreateWindow",,q% � warning% �@ș "XWimp_LoadTemplate",,q%,ind10%,ind10%+&400,-1,"loaded",0 �)ș "XWimp_CreateWindow",,q% � loaded% �Cș "XWimp_LoadTemplate",,q%,ind14%,ind14%+&600,-1,"abackdrop",0 �(ș "XWimp_CreateWindow",,q% � aback% �Bș "XWimp_LoadTemplate",,q%,ind15%,ind15%+&500,-1,"clockset",0 �'ș "XWimp_CreateWindow",,q% � cset% �Iș "XWimp_LoadTemplate",,modlinfo%,ind16%,ind16%+&350,-1,"modlinfo",0 �ș "XWimp_CloseTemplate" �set_size 3exists%=�("<Wimp$Scrap>"):� exists%>0 �#exists% (� exists%=0 �("Create <Wimp$Scrap>") &!�set_clock_flags(�,�,�,�,�,�) 0�menu(1) :�grey_menu(menu%+2200,1) D1�assemble:!ind_q%=q%:!scl%=scale%:!col%=cols% N X>�openup(main%,0,win_maxy%,win_maxx%,(win_maxy%-win_miny%)) bfirstrun%=� lquit%=� v �� � Ȏ � � �O � 175 : �tellemoff("Cannot copy error (type=1), handle="+�main%):appdata=� �O � 214 : �tellemoff("Cannot copy error (type=2), handle="+�main%):appdata=� �� : � �error("Nonfatal error: "+�$+" (internal error code "+Þ+"), handle="+�main%+", sprite area at "+�~(sprite%)+" Shall I Quit ?",3)=1 �modl_quit:ș "XInterface_CloseDown",taskh%:ș "XWimp_CloseDown":� �� �� firstrun% �load_modls �ș "XHourglass_Off" � �� �!ș "XWimp_Poll",,q% � reason% �3ș "XInterface_PreProcessKey",reason%,q%,taskh% �*ș "XInterface_Poll",reason%,q%,taskh% �Ȏ reason% � � 1 : �redraw '� 2 : ș "XWimp_OpenWindow",,q% (� 3 : ș "XWimp_CloseWindow",,q% F � !q%=backdrop% �puticonsprite(backdrop%,4,"toptoff") *$ � � � �iconise(!q%) 4� 6 : �checkmouse >(� 7 : sf$=�lastbit(sf$):�dragend H� 9 : �process_menu R� 17,18 : �message \� 19 : �mess_ack f1� 0 : �update_clock:�pass_null:�titlemenu p� z>� firstrun%=� firstrun%=�:�openup(loaded%,315,662,650,300) �2� clck �openup(clock%,clockx%,clocky%,200,200) �� quit% �$ș "XInterface_CloseDown",taskh% �ș "XWimp_CloseDown":� � �� �iconbar �� i% �q%!0=-1 � q%!4=0 � q%!8=0 �q%!12=68 �q%!16=96 �q%!20=&2002 $(q%+24)="!StickyBrd" "ș "XWimp_CreateIcon",,q% � i% =i% $ .� �message 8your_ref%=q%!8 Bmy_ref%=q%!12 LȎ (q%!16) � V� 0 : quit%=� `!� 1 : � q%!20<>saveas% � j* � appdata=� � adjust=� � t �warning ~ � � � �F ș "XOS_ReadVarVal","Wimp$Scrap",,-1,0,3 � ,,exists% �D � exists%=0 �tellemoff("Wimp$Scrap not defined"):� �9 q%!36=-1:�string0(q%+44,"<Wimp$Scrap>") �- !q%=(48+�"<Wimp$Scrap>")��3 �F q%!12=q%!8:q%!16=2:ș "XWimp_SendMessage",17,q%,q%!4 �* scrapref%=q%!8:appdata=� � � �� 2 : �dosave �� 3 : �lf �� 5 : �intercept �� 8 : �modl_quit � &502 : �sendhelp � &400C0 : �menu_message #� &400C1 : �set_size:�pix_trans � (� 2 <5� �read_size(� win_maxx%,� win_maxy%,� win_miny%) F+ș "XOS_ReadModeVariable",-1,4 � ,,eig% P8ș "XOS_ReadModeVariable",-1,11 � ,,limit%:limit%+=1 Zwin_maxx%=limit%<<eig% d+ș "XOS_ReadModeVariable",-1,5 � ,,eig% n8ș "XOS_ReadModeVariable",-1,12 � ,,limit%:limit%+=1 xwin_maxy%=limit%<<eig% �win_miny%=140+(1<<eig%) �� � �3� �set_size:win_maxx%=0:win_maxy%=0:win_miny%=0 �-�read_size(win_maxx%,win_maxy%,win_miny%) ��shut(main%) �6pointer%!0=main%:ș "XWimp_DeleteWindow",,pointer% �7pointer%!0=main1%:ș "XWimp_DeleteWindow",,pointer% �:main_w%!44=-(win_maxy%-win_miny%):main_w%!48=win_maxx% �+ș "Wimp_CreateWindow",,main_w% � main% �,ș "Wimp_CreateWindow",,main_w% � main1% �Bpointer%!0=main%:pointer%!4=0:ș "Wimp_GetIconState",,pointer% �"ș "Wimp_DeleteIcon",,pointer% Dpointer%!4=main%:pointer%!8=0:pointer%!12=-(win_maxy%-win_miny%) 'pointer%!16=win_maxx%:pointer%!20=0 $ș "Wimp_CreateIcon",,pointer%+4 ">� sploaded=� � tiled=� �puticonsprite(main%,0,backspname$) ,� I=0 � 80 6� file$(I)<>"" � @ spname$=ftype$(I) J1 ș "XWimp_SpriteOp",40,,ftype$(I) � ;flags% T � (flags% � 1)=1 � ^1 � filetype(I)=&2000 spname$="application" h/ � filetype(I)<>&2000 spname$="file_xxx" r � |D fg$=�~(fg):bg$=�~(bg):flag$=bg$+fg$+"018039":flag=�("&"+flag$) �S �create_icon(main%,0,x(I)-50,x(I)+115,-(1024-(y(I)-65)),65,spname$,&4701801A) �/ name$=�lastbit(file$(I)):wid%=(�name$)*16 �b �create_icon(main%,0,(x(I)-(wid%/2))+30,(x(I)+(wid%/2))+30,-(1024-(y(I)-115)),36,name$,flag) �( �puticonsprite(main%,i%-1,spname$) �� �� �>�openup(main%,0,win_maxy%,win_maxx%,(win_maxy%-win_miny%)) �� � �� �checkmouse �handle=(q%!12) �icon%=q%!16 �Ȏ (q%!12) � � main%,main1% Ȏ (q%!8) � 6� 4 : � q%!16>0 �set_icon(q%!12,q%!16):�run(icon%) &/� 2 : � q%!16>0 �:�setupinfo:�setmenuitem:� 0( � q%!16=0 �:�setclearmenu:� :5 ș "XWimp_CreateMenu",,menu%,!q%-64,q%!4 DK� &10 : � q%!16>0 adjust=�:sf$=�lastbit(file$(q%!16)):�dragabout(q%!16) NK� &40 : � q%!16>0 adjust=�:sf$=�lastbit(file$(q%!16)):�dragabout(q%!16) X� b� infowind% lȎ (q%!8) � v� 4 : Ȏ q%!16 � �P� 9 : �slabicon:ș "XWimp_CreateMenu",,-1:�openup(moreinfo%,240,762,800,600) �� �� �� backdrop% �Ȏ (q%!8) � �� 4 : Ȏ q%!16 � �� 4 : �staytoggle �H� 5 : �slabicon:�puticonsprite(main%,0,""):spritefile$="":sploaded=� �`� 6 : tiled=�:�puticonsprite(backdrop%,6,"tradioon"):�puticonsprite(backdrop%,8,"tradiooff") �`� 8 : tiled=�:�puticonsprite(backdrop%,6,"tradiooff"):�puticonsprite(backdrop%,8,"tradioon") �� �� � � saveas% Ȏ (q%!8) � � 4 : Ȏ q%!16 � a� 3 : �slabicon:�shut(saveas%):sf$=�trans("StickyBrdDesktop$Dir")+"."+�geticondata(saveas%,2) �load_new_desktop *a� 4 : �slabicon:�shut(saveas%):sf$=�trans("StickyBrdDesktop$Dir")+"."+�geticondata(saveas%,2) 4 �save_disc >� H� R� moreinfo% \ Ȏ q%!8 � f� 4 : Ȏ q%!16 � p@ � 14 : �slabicon:�shut(moreinfo%):� � � �iconise(moreinfo%) z� �� �� warning% � Ȏ q%!8 � � � 4 : Ȏ q%!16 � �% � 4 : �slabicon:�shut(warning%) �/ � 5 : �slabicon:�shut(warning%):appdata=0 � � �� � � loaded% � Ȏ q%!8 � � � 4 : Ȏ q%!16 � �$ � 5 : �slabicon:�shut(loaded%) �G � 6 : �slabicon:�shut(loaded%):� "WimpTask <StickyBrd$Dir>.!Help" � � � cset% $ Ȏ q%!8 � . � 4 : Ȏ q%!16 � 8 � 4 : �addh(2) B � 5 : �subh(2) L � 6 : �addm(3) V � 7 : �subm(3) `K � 8 : �slabicon:�settime(�geticondata(cset%,2),�geticondata(cset%,3)) j � t� ~� clock% � Ȏ q%!8 � �/ � 4,1 : �savedragbox(clock%,0):clocking%=� �� �' : �modl_mclick(handle,icon%,q%!8) �� �� � �� �menu(fvar) �� fg$,bg$,flag$ �mblk%=menu% �flags=&7000021 �� fvar=1 fg=7:bg=4 fg$=�~(fg):bg$=�~(bg) 4flag$=bg$+�fgcol(bg)+"000121":bflag=�("&"+flag$) 4flag$=fg$+�fgcol(fg)+"000121":fflag=�("&"+flag$) � fvar=1 $object%="File ''" ('� fvar=1 $openparent%="Open Parent" 2$� fvar=1 $fgb%="Text Foreground" <$� fvar=1 $bgb%="Text Background" F�header("StickyBrd",18) P&�entry(&02,menu%+400,flags,"Misc") Z.�indirect(&00,menu%+300,&07000121,object%) d+�entry(&00,menu%+1900,flags,"Backdrop") n$�entry(&00,-1,flags,"Clear All") x)�entry(&00,menu%+500,flags,"Colours") �*�entry(&00,menu%+1600,flags,"Options") �)�entry(&02,modlmenu%,flags,"Modules") ��entry(&80,-1,flags,"Quit") �#� modlptr=0 �grey_menu(menu%,6) �mblk%=menu%+300 ��header("Object",12) �#�entry(&00,about%,flags,"Info") �!�entry(&00,-1,flags,"Remove") �+�indirect(&80,-1,&07000121,openparent%) �mblk%=menu%+400 ��header("Misc",9) �&�entry(&00,infowind%,flags,"Info") �#�entry(&00,about%,flags,"File") '�entry(&80,saveas%,flags,"Desktop") mblk%=menu%+500 �header("Colours",16) "'�indirect(&00,menu%+600,fflag,fgb%) ,(�indirect(&80,menu%+1100,bflag,bgb%) 6mblk%=menu%+600 @�header("Colour",4) J �entry(&00,-1,&07000019,"0") T �entry(&00,-1,&17000019,"1") ^ �entry(&00,-1,&27000019,"2") h �entry(&00,-1,&30000019,"3") r �entry(&00,-1,&40000019,"4") | �entry(&00,-1,&50000019,"5") � �entry(&00,-1,&60000019,"6") � �entry(&00,-1,&70000019,"7") � �entry(&00,-1,&80000019,"8") � �entry(&00,-1,&97000019,"9") �!�entry(&00,-1,&A0000019,"10") �!�entry(&00,-1,&B0000019,"11") �!�entry(&00,-1,&C7000019,"12") �!�entry(&00,-1,&D0000019,"13") �!�entry(&00,-1,&E7000019,"14") �!�entry(&80,-1,&F7000019,"15") �� phew! and now again... �mblk%=menu%+1100 ��header("Colour",4) � here we go �entry(&00,-1,&07000019,"0") �entry(&00,-1,&17000019,"1") & �entry(&00,-1,&27000019,"2") 0 �entry(&00,-1,&30000019,"3") : �entry(&00,-1,&40000019,"4") D �entry(&00,-1,&50000019,"5") N �entry(&00,-1,&60000019,"6") X �entry(&00,-1,&70000019,"7") b �entry(&00,-1,&80000019,"8") l �entry(&00,-1,&97000019,"9") v!�entry(&00,-1,&A0000019,"10") �!�entry(&00,-1,&B0000019,"11") �!�entry(&00,-1,&C7000019,"12") �!�entry(&00,-1,&D0000019,"13") �!�entry(&00,-1,&E7000019,"14") �!�entry(&80,-1,&F7000019,"15") ��wimp_tick(menu%+600,7) ��wimp_tick(menu%+1100,4) �mblk%=menu%+1600 ��header("Options",13) ��entry(&00,-1,flags,"Hide") �"�entry(&02,-1,flags,"Restore") �-�entry(&00-clck,menu%+2100,flags,"Clock") �!�entry(&00,-1,flags,"Update") )�entry(&80-locked%,-1,flags,"Locked") mblk%=menu%+1900 �header("Backdrop",9) &�entry(&00,backdrop%,flags,"Load") *#�entry(&00,aback%,flags,"Info") 4"�entry(&00,-1,flags,"Restore") >'�entry(&80-turbo%,-1,flags,"Turbo") Hmblk%=menu%+2100 R�header("Clock",9) \*�entry(&00-emboss,-1,flags,"Embossed") f*�entry(&00-recess,-1,flags,"Recessed") p*�entry(&02-border,-1,flags,"Bordered") z'�entry(&00-twelve,-1,flags,"HH:MM") �*�entry(&00-twfour,-1,flags,"HH:MM:SS") �'�entry(&02-hour,-1,flags,"24 Hour") �!�entry(&80,-1,flags,"Set...") �� � �� �fgcol(col) �Ȏ col � �� 0,1,2,9,12,14,15 : ="7" �!� 3,4,5,6,7,8,10,11,13 : ="0" �� �� � �� �header(T$,w) $mblk%=T$ mblk%!12=&70207 mblk%!16=w*16 $mblk%!20=40 .mblk%!24=0 8 mblk%+=28 B� L V� �entry(A%,B%,C%,T$) `mblk%!0=A% jmblk%!4=B% tmblk%!8=C% ~$(mblk%+12)=T$ � mblk%+=24 �� � �� �indirect(A%,B%,C%,D%) �mblk%!0=A% �mblk%!4=B% �mblk%!8=C% �mblk%!12=D% �mblk%!16=-1 �mblk%!20=20 � mblk%+=24 �� '� �error(e$,b%):!q%=0:$(q%+4)=e$+�0 2ș "XWimp_ReportError",q%,b%,"StickyBrd" � ,b% =b% ( 2 � �lf <� Ff$=�250," "):f$="":T%=q%+44 Pȕ ?T%<>0:f$+=�?T%:T%+=1:� Z!� q%!20=backdrop% � q%!24=2 � d�loadbackdrop n� x�addtodesktop �� �"�modl_dataload(f$,q%!20,q%!24) �3q%!12=q%!8:q%!16=4:ș "XWimp_SendMessage",17,q% �� � � � �redraw �� q%!0=main% � � � tiled=� � � � sploaded=� � � B%=q% � � mcode% � �modl_redraw � � � � � "�modl_redraw ,&ș "XWimp_RedrawWindow",,q% � flag 6ȕ flag<>0 @&ș "XInterface_Render3dWindow",,q% J&ș "XWimp_GetRectangle",,q% � flag T� ^� h r� �assemble |� pass%=8 � 11 � 2 �P%=mcode%:L%=mcode%+300 �[OPT pass% �.start% �ASWI "Wimp_RedrawWindow" ; Get Wimp manager to redraw window �4.rl ; Start of redraw loop �0CMP R0,#0 ; More to redraw ? �A�Q PC,R14 ; No, so exit (Program Counter = Link) �!LDR R2,[R1,#4] ; } �!LDR R3,[R1,#8] ; } �1LDR R4,[R1,#12] ; } Get PWA offsets �?LDR R5,[R1,#16] ; } & such like from R1 (i.e. q%) �!LDR R6,[R1,#20] ; } �!LDR R7,[R1,#24] ; } )SUB R0,R2,R6 ; Get min x +STR R0,mix% ; Store min x )SUB R0,R5,R7 ; Get max y &'SUB R0,R0,#4 ; Correct 0+STR R0,may% ; Store max y :)SUB R0,R4,R6 ; Get max x D'SUB R0,R0,#4 ; Correct N+STR R0,max% ; Store max x X)SUB R0,R3,R7 ; Get min y b+STR R0,miy% ; Store min y l.spr_num vKMOV R0,#512 ; 'Plot sprite' reason code -- use indirected �IADD R0,R0,#52 ; Make up to 564 - can't represent directly �/LDR R1,sp% ; Get sprite area �/LDR R2,name% ; Get sprite name �?MOV R5,#8 ; Plot type - overwrite, use mask �$LDR R6,scl% ; Null �$LDR R7,col% ; Null �$MOV R8,#0 ; Null �/LDR R9,miy% ; Minimum Y value � .yloop �/ LDR R10,mix% ; Minimum X value � .xloop �3 MOV R3,R10 ; X (Taken from loop) �3 MOV R4,R9 ; Y (Taken from loop) ' SWI "OS_SpriteOp" ; Plot it - LDR R11,xinc% ; Get step size 8 ADD R10,R10,R11 ; Increment X by step size - LDR R11,max% ; Get maximum X *' CMP R10,R11 ; Compare 42 BLE xloop ; Loop back if < max >- LDR R11,yinc% ; Get step size H8 ADD R9,R9,R11 ; Increment Y by step size R- LDR R11,may% ; Get maximum Y \' CMP R9,R11 ; Compare f2 BLE yloop ; Loop back if < max p:LDR R1,ind_q% ; Get address of param block z2SWI "Wimp_GetRectangle" ; Get next rectangle �+B rl ; Branch back �.sp% EQUD 0 �.name% EQUD 0 �.xinc% EQUD 0:.yinc% EQUD 0 �7.max% EQUD 0:.mix% EQUD 0:.may% EQUD 0:.miy% EQUD 0 �,.ind_q% EQUD 0:.scl% EQUD 0:.col% EQUD 0 � ALIGN � .end% �] �� pass% �� pass%=0 � 3 � 2 �P%=mcode2%:L%=mcode2%+100 �[OPT pass% ADR R1,time_block% MOV R0,#3 STRB R0,[R1] $MOV R0,#14 .SWI "OS_Word" 8MOV PC,R14 B] L� pass% V� ` j� �re_asm(type%) tȎ type% � ~ � � : P%=spr_num � [OPT 2 � MOV R0,#512 � ADD R0,R0,#34 � ] � � �: P%=spr_num � [OPT 2 � MOV R0,#512 � ADD R0,R0,#52 � ] �� �� � � �pix_trans � sploaded � Cș "Wimp_ReadPixTrans",&100,sprite%,backspname$,,,,scale%,cols% � (� 2 <� �process_menu F9ș "XWimp_GetPointerInfo",,pointer%:j%=(pointer%!8=1) PȎ handle � Z� main%,main1% d Ȏ q%!0 � n � 1 : Ȏ q%!4 � x$ � 1 : � (icon% � 2=0) icon%-=1 � �delete(icon%,1) �. �modl_delete(icon%,type(icon%)) �$ � 2 : � (icon% � 2=0) icon%-=1 �> �("WimpTask Filer_OpenDir "+�dir(file$(icon%))) � � � � 2 : Ȏ q%!4 � � � 2 : sf$=desktop$ � �load_new_desktop �4 � 3 : turbo%=� turbo%:�menu(0):�re_asm(turbo%) � � � � 3 : �deleteall � � 4 : Ȏ q%!4 � � � 0 : � q%!8<>-1 �fg � 1 : � q%!8<>-1 �bg � � 5 : Ȏ q%!4 � "m � 0 : �shut(main%):�openup(main1%,0,win_maxy%,win_maxx%,(win_maxy%-win_miny%)):�grey_menu(menu%+2200,0) ,' �grey_menu(menu%+2200,1) 6� � 1 : �shut(main1%):�openup(main%,0,win_maxy%,win_maxx%,(win_maxy%-win_miny%)):� clck=� �openup(clock%,clockx%,clocky%,200,200) @& �grey_menu(menu%+2200,1) J& �grey_menu(menu%+2200,0) T � 2 : Ȏ q%!8 � ^B � -1 : clck=� clck:�menu(0):�grey_menu(menu%+2200,1):�clock h] � 0 : �set_clock_flags(�,�,�,twelve,twfour,hour):�menu(0):�grey_menu(menu%+2200,1):�rs r] � 1 : �set_clock_flags(�,�,�,twelve,twfour,hour):�menu(0):�grey_menu(menu%+2200,1):�rs |] � 2 : �set_clock_flags(�,�,�,twelve,twfour,hour):�menu(0):�grey_menu(menu%+2200,1):�rs �^ � 3 : �set_clock_flags(emboss,recess,border,�,�,hour):�menu(0):�grey_menu(menu%+2200,1) �^ � 4 : �set_clock_flags(emboss,recess,border,�,�,hour):�menu(0):�grey_menu(menu%+2200,1) �j � 5 : �set_clock_flags(emboss,recess,border,twelve,twfour,� hour):�menu(0):�grey_menu(menu%+2200,1) �� � 6 : cx%=pointer%!0:cy%=pointer%!4:�setup_sclck:�openup(cset%,cx%,cy%,500,250):ș "XWimp_SetCaretPosition",cset%,2,,,-1,�(�geticondata(cset%,2)) � � � � 3 : q%!8=fg:�fg �& � 4 : locked%=� locked%:�menu(0) � � � � 6 : �modl_sendmenu � � 7 : �modl_quit:quit%=� �� �� &FFFFFFFF � � step%=0 � q%!0 ' q$=$(filemen%+28+(24*step%)+12) filepath$+="."+q$ � &5 ș "XWimp_StartTask","Filer_OpenDir "+filepath$ 0� :=� j% � ș "XWimp_CreateMenu",,menu%,pointer%!0,pointer%!4 D� N X� �openup(whandle,x,y,w,h) bpointer%!0=whandle lpointer%!4=x:pointer%!8=y-h v!pointer%!12=x+w:pointer%!16=y �pointer%!20=0:pointer%!24=0 �U� whandle=main% � whandle=main1% � whandle=clock% pointer%!28=-2 � pointer%!28=-1 �#ș "XWimp_OpenWindow",,pointer% �� � �� �slabicon �"ș "XInterface_SlabButton",,q% � q%!8=0 �"ș "XInterface_SlabButton",,q% �� � �!� �geticondata(window%,icon%) �pointer%!0=window% pointer%!4=icon% %ș "XWimp_GetIconState",,pointer% =$(pointer%!28) *$� �puticondata(window%,icon%,T$) 4pointer%!0=window% >pointer%!4=icon% H%ș "XWimp_GetIconState",,pointer% Rpointer%!8=0 \pointer%!12=0 f$(pointer%!28)=T$ p%ș "XWimp_SetIconState",,pointer% z� � �� �loadbackdrop �)sploaded=�:�puticonsprite(main%,0,"") �(� n%,o%,b%,q$,h%,x%,y%,v%,m%,var%,z$ ��("IconSprites "+f$) �&ș "OS_SpriteOp",256+10,sprite%,f$ �h%=�(f$) �n%=�b:o%=�b:b%=-4 ��#h%=o%+b%:b%+=o%:o%=�b �(q$="":� var=1 � 12:q$+=�(�#h%):� var �palette$="No" �Lx%=�b:y%=�b:v%=-�b+�b-31:m%=�b:�m%=�#h%-4 palette$="No" � palette$="Yes" �� m% � �b:z$="Yes" � z$="N" 1m%=�b:ș "XOS_ReadModeVariable",m%,9 � ,,var% ?x%=(32*(x%+1)+v%) � 2^var%:spx%=x%:spy%=y%+1:backspname$=q$ +ș "XOS_ReadModeVariable",m%,4 � ,,var% $sp1x%=spx%<<var% .+ș "XOS_ReadModeVariable",m%,5 � ,,var% 8sp1y%=spy%<<var% B�#h% L(ș "XOS_CheckModeValid",m% � exists% V5� exists%<>-1 � exists%<>-2 ș "XWimp_SetMode",m% `(�string_at_address(backspname$,loc%) j6!name%=loc%:!sp%=sprite%:!xinc%=sp1x%:!yinc%=sp1y% t�pix_trans ~/� tiled=� �tiled(m%,spx%,spy%,q$,x%,y%+1):� �'�puticonsprite(main%,0,backspname$) �spritefile$=f$ ��puticondata(aback%,3,f$) �&�puticondata(aback%,4,backspname$) �#�puticondata(aback%,5,palette$) �$�puticondata(aback%,7,"Centred") ��puticondata(aback%,14,�m%) ��puticondata(aback%,16,�x%) �#�puticondata(aback%,18,�(y%+1)) �ș "XWimp_CreateMenu",,-1 �� � � �display_block(max) � debugging routine � #� Displays wimp parameter block (: 2� I=0 � max � 4 <(� I=24 x%=�error(�~(pointer%!I),1):� F'� I=28 x%=�error($(pointer%+I),1):� P)� I=32 x%=�error($(pointer%+I),1):�:� Z#� and now general purpose stuff dx%=�error(�pointer%!I,1) n� x: �� � �&� �puticonsprite(window%,icon%,T$) �'pointer%!0=window%:pointer%!4=icon% �%ș "XWimp_GetIconState",,pointer% �#ș "XWimp_DeleteIcon",,pointer% �4pointer%!4=window%:$(pointer%+28)=T$:pointer%+=4 ȁș "XWimp_CreateIcon",,pointer%:ș "XWimp_ForceRedraw",pointer%!0,pointer%!4,pointer%!8,pointer%!12,pointer%!16:pointer%-=4:� � �:� �create_icon(handle,addr,minx,maxx,miny,ht,t$,flags) �point%=q%+400 �point%!0=handle �point%!4=minx point%!8=miny point%!12=maxx point%!16=miny+ht "point%!20=flags ,� addr=0 � 6$(point%+24)=t$ @� Jpoint%!24=addr Tpoint%!28=-1 ^point%!32=32 h� r%ș "Wimp_CreateIcon",,point% � i% |� � �� �addtodesktop �type$="" �8� q%!40<>&2000 � q%!40<>&1000 type$=�getftype(q%!40) �&� q%!40=&2000 � type$=�lastbit(f$) �#� q%!40=&1000 type$="directory" �spname$=type$ �+ș "XWimp_SpriteOp",40,,type$ � ;flags% �� (flags% � 1)=1 � �( � q%!40=&2000 spname$="application" �5 � q%!40<>&2000 � q%!40<>&1000 spname$="file_xxx" �� �Bfg$=�~(fg):bg$=�~(bg):flag$=bg$+fg$+"018039":flag=�("&"+flag$) 'ș "XWimp_GetPointerInfo",,pointer% !pointer%!0-=32:pointer%!4+=32 ��create_icon(main%,0,pointer%!0-50,pointer%!0+115,-(1024-(pointer%!4-65)),65,spname$,&4701801A):file$(i%)=f$:x(i%)=pointer%!0:y(i%)=pointer%!4:ftype$(i%)=type$:filetype(i%)=q%!40 &D� q%!40=&2000 type(i%)=0 � � q%!40=&1000 type(i%)=1 � type(i%)=2 0'name$=�lastbit(f$):wid%=(�name$)*16 :r�create_icon(main%,0,(pointer%!0-(wid%/2))+30,(pointer%!0+(wid%/2))+30,-(1024-(pointer%!4-115)),36,name$,flag) D&�puticonsprite(main%,i%-1,spname$) NIș "XWimp_ForceRedraw",point%!0,point%!4,point%!8,point%!12,point%!16 X� b l� �staytoggle v(� stayopen=� stayopen=� � stayopen=� ��� stayopen=� �puticonsprite(backdrop%,4,"topton"):pointer%!0=backdrop%:ș "XWimp_GetWindowState",,pointer%:ș "XWimp_CreateMenu",,-1:pointer%!28=-1:ș "XWimp_OpenWindow",,pointer% �6� stayopen=� �puticonsprite(backdrop%,4,"toptoff") �� � �4� �rtoz(T%):q$="":ȕ ?T%<>0:q$+=�?T%:T%+=1:�:=q$ � � � �xy �� Debug FN � =�pointer%!0+"/"+�pointer%!4 � �� �zero(expression) �=0-expression � � �lastbit(s$) "� s$="<Wimp$Scrap>" ="Tempory" ȕ �s$,":")>0 s$=�s$,�s$,":")+1) *� 4ȕ �s$,".")>0 >s$=�s$,�s$,".")+1) H� R=s$ \ f� �run(val) p� (val � 2=0) val-=1 z'ș "XWimp_GetPointerInfo",,pointer% �#x=pointer%!0-32:y=pointer%!4+32 �Ȏ type(val) � �� 3 �Ȏ file$(val) � �3 � "Info" : �openup(infowind%,x,y,650,450) �3 � "More Info" : �openup(moreinfo%,x,y,800,600) �3 � "Backdrop" : �openup(backdrop%,x,y,540,450) �1 � "Save" : �openup(saveas%,x,y,300,180) �0 � "Object" : �openup(about%,x,y,780,350) �0 � "Clock" : �openup(clock%,x,y,200,100) �2 � "Warning" : �openup(warning%,x,y,650,300) �1 � "Loaded" : �openup(loaded%,x,y,650,300) �0 � "BackInfo" : �openup(aback%,x,y,780,360) ~ � "ClockSet" : �setup_sclck:�openup(cset%,x,y,500,250):ș "XWimp_SetCaretPosition",cset%,2,,,-1,�(�geticondata(cset%,2)) � : �setmodlinfo(�modl_handle(file$(val))):�openup(�modl_handle(file$(val)),x,y,�modl_xw(file$(val)),�modl_yh(file$(val))) � $< � 1 : �("WimpTask Filer_OpenDir "+file$(val)) .8 � 2 : �file_run(file$(val),filetype(val)) 8 � 0 : � � � � B? �("WimpTask Filer_OpenDir "+file$(val)) L � V" � �(� �) � `5 �("WimpTask Run "+file$(val)) j � t5 : �modl_click(type(val),file$(val),x,y) ~� �� � �� �delete(val,flag) �� locked% � �� type(val)>3 � flag=1 � �pointer%!0=main% �pointer%!4=val �%ș "XWimp_GetIconState",,pointer% �#ș "XWimp_DeleteIcon",,pointer% �Sș "XWimp_ForceRedraw",pointer%!0,pointer%!4,pointer%!8,pointer%!12,pointer%!16 �pointer%!4=val+1 �%ș "XWimp_GetIconState",,pointer% #ș "XWimp_DeleteIcon",,pointer% Sș "XWimp_ForceRedraw",pointer%!0,pointer%!4,pointer%!8,pointer%!12,pointer%!16 2� clck �openup(clock%,clockx%,clocky%,200,200) Nfile$(val)="":type(val)=0:x(val)=0:y(val)=0:ftype$(val)="":filetype(val)=0 (� 2 <� �shut(handle) Fpointer%!0=handle P$ș "XWimp_CloseWindow",,pointer% Z� d n� �set(window,icon) xpointer%!0=window �pointer%!4=icon �pointer%!8=&200000 �pointer%!12=0 �%ș "XWimp_SetIconState",,pointer% �� � �!� �savedragbox(window%,icon%) �� x%,y%,ysize% �!pointer%=window% �'ș "XWimp_GetWindowState",,pointer% �!ysize%=pointer%!16-pointer%!8 �x%=pointer%!4 �y%=pointer%!8 � window%=main% � pointer%!4=icon%+1 ' ș "XWimp_GetIconState",,pointer% " ny%=pointer%!12 ,� 6pointer%!4=icon% @%ș "XWimp_GetIconState",,pointer% Jsf$=�lastbit(sf$) Tpointer%!8+=x% ^� window%=main% � h pointer%!12=ny%+y%+ysize% r� | pointer%!12+=y%+ysize% �� �pointer%!16+=x% �pointer%!20+=y%+ysize% �pointer%!24=0 �pointer%!28=0 �pointer%!32=&7FFFFFFF �pointer%!36=&7FFFFFFF �pointer%!0=0 �pointer%!4=5 � ș "XWimp_DragBox",,pointer% �� � � � �import 'ș "XWimp_GetPointerInfo",,pointer% 5pointer%!32=pointer%!4 :thirtytwo%=pointer%!32 7pointer%!28=pointer%!0 :twentyeight%=pointer%!28 &6pointer%!24=pointer%!16 :twentyfour%=pointer%!24 02pointer%!20=pointer%!12 :twenty%=pointer%!20 :pointer%!16=1 Dpointer%!12=0 Npointer%!36=0 Xpointer%!40=0 b!pointer%=64 l$(pointer%+44)=sf$ v>ș "XWimp_SendMessage",17,pointer%,pointer%!20,pointer%!24 �myref%=pointer%!8 �� � � � �dosave �sf$=�rtoz(q%+44) �$� adjust=� �dragged � �copy_file �� � �� �tellemoff(e$) � � er% �er%=pointer% � !er%=0 �$(er%+4)=e$+�0 !,ș "XWimp_ReportError",er%,1,"StickyBrd" !� ! ! � �save_disc !* h%=�(sf$) !4<�#h%,fg,bg,tiled,clck,emboss,recess,border,twelve,twfour !>%�#h%,clockx%,clocky%,hour,locked% !H� I=0 � 80 !R9�#h%,file$(I),type(I),x(I),y(I),ftype$(I),filetype(I) !\� !f�#h% !ph� sploaded ș "OS_SpriteOp",12+256,sprite%,�trans("StickyBrdDesktop$Dir")+"."+¤lastbit(sf$),8)+"SP" !z�modl_saveconfig !�+ș "Wimp_CreateMenu",,-1:�shut(saveas%) !�� !� !�� �intercept !�2f$=�250," "):f$="":f$=�rtoz(q%+44):new_app$=f$ !�Ȏ q%!40 � !�@� &FFD : � �lastbit(f$)="!Config" �load_new_placeit_file(f$) !� : � !�� !�3q%!12=q%!8:q%!16=4:ș "XWimp_SendMessage",17,q% !�� !� !�� �load_new_desktop "h%=0:� � "B� � � �tellemoff("Desktop file load error #"+Þ+" ("+�$+")"):� "ș "XHourglass_On" "$�deleteall ".�modl_clearback(1,sf$) "8desktop$=sf$ "B h%=�(sf$) "L>�#h%,nfg,nbg,tiled,clck,emboss,recess,border,twelve,twfour "V%�#h%,clockx%,clocky%,hour,locked% "`� I=0 � 80 "j$ � SYS "XHourglass_Percentage",I "t: �#h%,file$(I),type(I),x(I),y(I),ftype$(I),filetype(I) "~� "� �#h%:h%=0 "�Ispritefile$=�trans("StickyBrdDesktop$Dir")+"."+¤lastbit(sf$),8)+"SP" "�j%=�(spritefile$) "�t=�:� j%>0 t=� "��#j% "� � t � "� f$=spritefile$ "� �loadbackdrop "�� "�� I=0 � 80 "� � file$(I)<>"" � "� � filetype(I)=&2000 � # 3 ș "XWimp_SpriteOp",40,,ftype$(I) � ;flags% # � (flags% � 1)=1 � # � �(�-3) � #! h%=�(file$(I)+".!Boot") #( � h%=0 � #2% i%=�(file$(I)+".!Sprites") #<> � i%<>0 �#i%:�("IconSprites "+file$(I)+".!Sprites") #F � i%=0 �#i% #P � #Z � h%<>0 � #d �#h% #n' �("Obey "+file$(I)+".!Boot") #x � #� � h%=0 �#h% #� � #� � #� � #� � #� � file$(I)<>"" � #� spname$=ftype$(I) #�/ ș "XWimp_SpriteOp",40,,spname$ � ;flags% #� � (flags% � 1)=1 � #�( � type(I)=0 spname$="application" #�% � type(I)=2 spname$="file_xxx" #� � #�S �create_icon(main%,0,x(I)-50,x(I)+115,-(1024-(y(I)-65)),65,spname$,&4701801A) $/ name$=�lastbit(file$(I)):wid%=(�name$)*16 $D fg$=�~(fg):bg$=�~(bg):flag$=bg$+fg$+"018039":flag=�("&"+flag$) $b �create_icon(main%,0,(x(I)-(wid%/2))+30,(x(I)+(wid%/2))+30,-(1024-(y(I)-115)),36,name$,flag) $"( �puticonsprite(main%,i%-1,spname$) $, � $6� $@%�menu(0):�grey_menu(menu%+2200,1) $J�shut(main%) $T>�openup(main%,0,win_maxy%,win_maxx%,(win_maxy%-win_miny%)) $^�rs $hdummy=q%!8 $rq%!8=nfg:�fg $|q%!8=nbg:�bg $�q%!8=dummy $�� tiled=� � $�+ �puticonsprite(backdrop%,6,"tradioon") $�, �puticonsprite(backdrop%,8,"tradiooff") $� � $�, �puticonsprite(backdrop%,6,"tradiooff") $�+ �puticonsprite(backdrop%,8,"tradioon") $�� $�� inform modules $��modl_deskstart $��shut(saveas%) $�ș "XHourglass_Off" $�� � %� % %� �setupinfo %&� (icon% � 2=0) icon%-=1 %0Cfil$=file$(icon%):� fil$="<Wimp$Scrap>" fil$="Application Data" %:&� �fil$,1)="*" fil$=�lastbit(fil$) %D�puticondata(about%,6,fil$) %N2�puticondata(about%,7,�ftype(filetype(icon%))) %X-�puticondata(about%,8,�type(type(icon%))) %b#�puticondata(about%,9,desktop$) %lspname$=ftype$(icon%) %v-ș "XWimp_SpriteOp",40,,spname$ � ;flags% %�� (flags% � 1)=1 � %�* � type(icon%)=0 spname$="application" %�' � type(icon%)=2 spname$="file_xxx" %�� %�%�puticonsprite(about%,11,spname$) %�� %� %�� �type(type) %� Ȏ type � %� � 0 : ="Runs Application" %� � 1 : ="Opens Directory" %� � 2 : ="Executes File" %� � 3 : ="Opens Window" & � 4 : ="Executes Command" &� &="Module-Specific" & &*� �ftype(type) &4#� type=&FFFF ="Iconised Window" &>� type=&2000 ="Application" &H� type=&1000 ="Directory" &R� type=&000 ="Module Icon" &\0ș "XOS_FSControl",&12,,type � ,,byte1,byte2 &f5q$="":!pointer%=byte1:pointer%?4=13:q$+=$pointer% &p/!pointer%=byte2:pointer%?4=13:q$+=$pointer% &z!ȕ �q$,1)=" ":q$=�q$,�q$-1):� &�type$=�~(type) &�!� �(type$)=1 type$="00"+type$ &� � �(type$)=2 type$="0"+type$ &�� �q$,3)=type$ q$="" &�q$+=" (&"+type$+")" &�=q$ &� &�� �dragabout(ic%) &�� (ic% � 2=0) ic%-=1 &�u�savedragbox(main%,ic%):file$=file$(ic%):ftype$=ftype$(ic%):filetype=filetype(ic%):iconhandle%=ic%:type=type(ic%) &�� &� &�� �dragend '+� clocking%=� clocking%=�:�move_clock:� 'sf$=�lastbit(file$) '�import '$� '. '80� �copy_file:� sf$="<Wimp$Scrap>" �dragged:� 'B�set_icon(handle,icon%) 'L� (icon% � 2)=0 icon%-=1 'Vmove=�:� � � move=� '`Ȏ type(icon%) � 'j� 0,1,2 't;�("Set Copy$Options A ~C ~D ~F ~L ~N ~P ~Q R ~S ~T ~V") '~file1$=sf$ '��("Copy "+file$+" "+file1$) '�*� �lastbit(file1$)="Tempory" appdata=� '�� move �delete(icon%,0) '� � 3 : �:� '�, : �modl_dragend(file$,sf$,type(icon%)) '�� '�� '� '�� �string0(a%,a$) '�$a%=a$:a%?�a$=0 '�� '� ( � �deleteall ( � I=0 � 80 (� file$(I)<>"" �delete(I,1) (� ((�modl_clearback(0,"") (2�shut(main%) (<>�openup(main%,0,win_maxy%,win_maxx%,(win_maxy%-win_miny%)) (F� (P (Z� �wimp_tick(b%,n) (d#b%!(28+24*n)=b%!(28+24*n) � &01 (n� (x (� � �fg (�ș "XHourglass_On" (��wimp_tick(menu%+600,fg) (�fg=q%!8 (��wimp_tick(menu%+600,fg) (�fg$=�~(fg) (�bg$=�~(bg) (�flag$=bg$+fg$+"018039" (�flag=�("&"+flag$) (�� I=0 � 80 (�� file$(I)<>"" � (�!pointer%!0=main%:pointer%!4=I (�2ș "XWimp_DeleteIcon",,pointer%:pointer%!4=I+1 )#ș "XWimp_DeleteIcon",,pointer% )spname$=ftype$(I) ),ș "XWimp_SpriteOp",40,,spname$ � ;flag% )"� (flag% � 1)=1 � ),& � type(I)=0 spname$="application" )6# � type(I)=2 spname$="file_xxx" )@� )JQ�create_icon(main%,0,x(I)-50,x(I)+115,-(1024-(y(I)-65)),65,spname$,&4701801A) )T-name$=�lastbit(file$(I)):wid%=(�name$)*16 )^`�create_icon(main%,0,(x(I)-(wid%/2))+30,(x(I)+(wid%/2))+30,-(1024-(y(I)-115)),36,name$,flag) )h&�puticonsprite(main%,i%-1,spname$) )rL� SYS "XWimp_ForceRedraw",point%!0,point%!4,point%!8,point%!12,point%!16 )|� )�� )�fg$=�~(fg) )�%menuflag$=fg$+�fgcol(fg)+"000121" )�0menuflag=�("&"+menuflag$):menu%!536=menuflag )��shut(main%) )�>�openup(main%,0,win_maxy%,win_maxx%,(win_maxy%-win_miny%)) )�ș "XHourglass_Off" )�� )� )� � �bg )�ș "XHourglass_On" )��wimp_tick(menu%+1100,bg) )�bg=q%!8 *�wimp_tick(menu%+1100,bg) *fg$=�~(fg) *bg$=�~(bg) *&flag$=bg$+fg$+"018039" *0flag=�("&"+flag$) *:� I=0 � 80 *D� file$(I)<>"" � *N!pointer%!0=main%:pointer%!4=I *X2ș "XWimp_DeleteIcon",,pointer%:pointer%!4=I+1 *b#ș "XWimp_DeleteIcon",,pointer% *lspname$=ftype$(I) *v-ș "XWimp_SpriteOp",40,,spname$ � ;flags% *�� (flags% � 1)=1 � *�& � type(I)=0 spname$="application" *�# � type(I)=2 spanme$="file_xxx" *�� *�Q�create_icon(main%,0,x(I)-50,x(I)+115,-(1024-(y(I)-65)),65,spname$,&4701801A) *�-name$=�lastbit(file$(I)):wid%=(�name$)*16 *�m�create_icon(main%,0,(x(I)-(wid%/2))+30,(x(I)+(wid%/2))+30,-(1024-(y(I)-115)),36,�lastbit(file$(I)),flag) *�&�puticonsprite(main%,i%-1,spname$) *�L� SYS "XWimp_ForceRedraw",point%!0,point%!4,point%!8,point%!12,point%!16 *�� *�� *�bg$=�~(bg) *�%menuflag$=bg$+�fgcol(bg)+"000121" +menuflag=�("&"+menuflag$) +menu%!560=menuflag +�shut(main%) + >�openup(main%,0,win_maxy%,win_maxx%,(win_maxy%-win_miny%)) +*ș "XHourglass_Off" +4� +> +H� �getftype(type) +Rtype$=�~(type) +\!� �(type$)=1 type$="00"+type$ +f � �(type$)=2 type$="0"+type$ +p="file_"+type$ +z +�+� �b:=�#h%+�#h%*2^8+�#h%*2^16+�#h%*2^24 +� +�(� �dragged:� x%,y%:x%=q%!28:y%=q%!32 +�� locked% � +��ș "XHourglass_On":�set_icon(handle,icon%):pointer%!0=main%:pointer%!4=iconhandle%:ș "XWimp_DeleteIcon",,pointer%:pointer%!4=iconhandle%+1:ș "XWimp_DeleteIcon",,pointer% +�2� clck �openup(clock%,clockx%,clocky%,200,200) +�%pointer%!0=x%-32:pointer%!4=y%+32 +�<spname$=ftype$:ș "XWimp_SpriteOp",40,,spname$ � ;flags% +�� (flags% � 1)=1 � +�# � type=0 spname$="application" +� � type=2 spname$="file_xxx" +�� +���create_icon(main%,0,pointer%!0-50,pointer%!0+115,-(1024-(pointer%!4-65)),65,spname$,&4701801A):x(i%)=pointer%!0:y(i%)=pointer%!4:file$(i%)=file$:ftype$(i%)=ftype$:filetype(i%)=filetype ,fg$=�~(fg) ,bg$=�~(bg) ,flag$=bg$+fg$+"018039" ,$<flag=�("&"+flag$):name$=�lastbit(file$):wid%=(�name$)*16 ,.|�create_icon(main%,0,(pointer%!0-(wid%/2))+30,(pointer%!0+(wid%/2))+30,-(1024-(pointer%!4-115)),36,�lastbit(file$),flag) ,8&�puticonsprite(main%,i%-1,spname$) ,B�shut(main%) ,Lgpointer%!0=main%:ș "XWimp_GetWindowState",,pointer%:pointer%!28=-2:ș "XWimp_OpenWindow",,pointer% ,V!ș "XHourglass_Off":appdata=� ,`� ,j ,t� �iconise(handle) ,~fg$=�~(fg) ,�bg$=�~(bg) ,�flag$=bg$+fg$+"018039" ,�flag=�("&"+flag$) ,�'ș "XWimp_GetPointerInfo",,pointer% ,�!pointer%!0-=32:pointer%!4+=32 ,�e�create_icon(main%,0,pointer%!0-50,pointer%!0+115,-(1024-(pointer%!4-65)),65,"iconise",&4701801A) ,�-name$=�translate(handle):wid%=(�name$)*16 ,��create_icon(main%,0,(pointer%!0-(wid%/2))+30,(pointer%!0+(wid%/2))+30,-(1024-(pointer%!4-105)),36,�translate(handle),flag) ,�(�puticonsprite(main%,i%-1,"iconise") ,�|i%-=1:file$(i%)=�translate(handle)::ftype$(i%)="iconise":filetype(i%)=&FFFF:x(i%)=pointer%!0:y(i%)=pointer%!4:type(i%)=3 ,�Iș "XWimp_ForceRedraw",point%!0,point%!4,point%!8,point%!12,point%!16 ,�� - - � �translate(handle) -Ȏ handle � - � infowind% : ="Info" -( � moreinfo% : ="More Info" -2 � backdrop% : ="Backdrop" -< � saveas% : ="Save" -F � about% : ="Object" -P � clock% : ="Clock" -Z � warning% : ="Warning" -d � loaded% : ="Loaded" -n � aback% : ="BackInfo" -x � cset% : ="ClockSet" -�� -�=�modl_trans(handle) -� -�� �clock -�7� clck=-1 �openup(clock%,clockx%,clocky%,200,200):� -�� clck=0 �shut(clock%):� -�Z�tellemoff("Clock display error, clock handle "+�clock%+", returning to poll loop."):� -� -�� �update_clock -� time$=�geticondata(clock%,0) -� � mcode2% -�� hour=� � -�2� twfour type$="%24:%MI:%SE" � type$="%24:%MI" .� .2� twfour type$="%12:%MI:%SE" � type$="%12:%MI" .� .">ș "OS_ConvertDateAndTime",time_block%,time_buff%,20,type$ .,buff$=�rtoz(time_buff%) .6/� time$<>buff$ �puticondata(clock%,0,buff$) .@� .J .T� �warning .^%�openup(warning%,315,662,650,300) .h� .r .|)� �tiled(mode%,sx%,sy%,spname$,x%,y%) .�spritefile$=f$ .��puticondata(aback%,3,f$) .�"�puticondata(aback%,4,spname$) .�#�puticondata(aback%,5,palette$) .�"�puticondata(aback%,7,"Tiled") .�"�puticondata(aback%,14,�mode%) .��puticondata(aback%,16,�x%) .��puticondata(aback%,18,�y%) .�.ș "XOS_ReadModeVariable",mode%,4 � ,,var% .�sx%=sx%<<var% .�.ș "XOS_ReadModeVariable",mode%,5 � ,,var% .�sy%=sy%<<var% .��shut(main%) />�openup(main%,0,win_maxy%,win_maxx%,(win_maxy%-win_miny%)) /ș "XWimp_CreateMenu",,-1 /� /& /0� �grey_icon(w%,i%) /:pointer%!0=w% /Dpointer%!4=i% /Npointer%!8=&400000 /Xpointer%!12=0 /b%ș "XWimp_SetIconState",,pointer% /l� /v /�� �setmenuitem /� � ic% /� ic%=q%!16 /�� (ic% � 2=0) ic%-=1 /�ft$="File":tt$="File" /�Ȏ type(ic%) � /�&� 0 : ft$="App.":tt$="Application" /�9 � �as(menu%+300,2)=1 �grey_menu(menu%+300,2) /�$� 1 : ft$="Dir.":tt$="Directory" /�9 � �as(menu%+300,2)=1 �grey_menu(menu%+300,2) /�� 2 : ft$="File":tt$="File" /�9 � �as(menu%+300,2)=1 �grey_menu(menu%+300,2) /�!� 3 : ft$="Win.":tt$="Window" 09 � �as(menu%+300,2)=0 �grey_menu(menu%+300,2) 0 : ft$="Obj.":tt$="Object" 09 � �as(menu%+300,2)=0 �grey_menu(menu%+300,2) 0 � 0*.$object%=ft$+" '"+�lastbit(file$(ic%))+"'" 04$(menu%+300)=tt$ 0>(� �as(menu%,1)=1 �grey_menu(menu%,1) 0H0� �as(menu%+400,1)=1 �grey_menu(menu%+400,1) 0R� 0\ 0f� �set_icon(w%,i%) 0ppointer%!0=w% 0zpointer%!4=i% 0�pointer%!8=&200000 0�pointer%!12=0 0�%ș "XWimp_SetIconState",,pointer% 0�� 0� 0�� �sendhelp 0�%q%!12=q%!8:q%!16=&503:help%=q%+20 0�.help%=�help(q%!32,q%!36,help%):� help%=0 � 0�?help%=0 0�!q%=(help%+4-q%)��3 0�%ș "XWimp_SendMessage",17,q%,q%!4 0�� 0� 1� �help(w%,i%,h%) 1 $h%="" 1Ȏ w% � 1$ � infowind% 1. Ȏ i% � 18 � -1,0,1,2,3,4,5,6,7,8 1BL $h%="This is the Info Window.|MIt provides information on !StickyBrd." 1L) : ș "XInterface_SendHelp",,q%:=0 1V � 1` � moreinfo% 1j Ȏ i% � 1t* � -1,0,1,2,3,4,5,6,7,8,9,10,11,12,13 1~= $h%="This window gives more information on !StickyBrd." 1�) : ș "XInterface_SendHelp",,q%:=0 1� � 1� � backdrop% 1� Ȏ i% � 1� � -1,0,1,3,7,9 1�X $h%="This is the 'Load Backdrop' window.|MUse this window to load a new backdrop." 1� � 2 1�X $h%="This is the 'Load Sprite' icon.|MDrag a Sprite file to this icon to load it." 1� � 4 1�L $h%="This is the 'Stay Open' icon.|MClick it to keep the window open." 1� � 6 1�W $h%="This is the 'Tiled' radio button.|MClick on it to select 'Tiled' backdrops." 2 � 8 2 [ $h%="This is the 'Centred' radio button.|MClick on it to select 'Centred' backdrops." 2) : ș "XInterface_SendHelp",,q%:=0 2 � 2( � main% 22 Ȏ i% � 2<� � 0 : $h%="This is the desktop backdrop.|MIt is now `sticky� and will accept directories, applications, and files.|MDrag these to the desktop backdrop to add them to it." 2F : ic%=i% 2P& � (ic% � 2=0) ic%-=1 2Z. $h%="This is the icon for `" 2d+ $h%+=�lastbit(file$(ic%)) 2n $h%+="�.|M" 2x( $h%+="Click on it to " 2�+ $h%+=�findtype(type(ic%)) 2� $h%+="." 2� � 2� � about% 2�} $h%="This is the 'Object Information' window.|MIt provides information about the object the pointer is currently over." 2� � saveas% 2� Ȏ i% � 2� � -1 2�X $h%="This is the 'Save' window.|MUse it to save the current state of the desktop." 2� 2�% ș "XInterface_SendHelp",,q%:=0 2� � 2� � warning% 3 Ȏ i% � 3- � 4,5 : ș "XInterface_SendHelp",,q%:=0 3~ : $h%="This is the 'Warning' window.|MIt indicates that you already have some application data saved into !StickyBrd." 3" � 3, � loaded% 36 Ȏ i% � 3@- � 5,6 : ș "XInterface_SendHelp",,q%:=0 3Jy : $h%="This is the 'Loaded' window.|MIt shows that !StickyBrd is loaded, and displays the copyright (�) message." 3T � 3^$ ș "XInterface_SendHelp",,q%:=0 3h � main1% 3r� $h%="This is the desktop backdrop.|MThe 'real' backdrop is currently 'hidden'.|MSelect 'Restore' from the 'Options' menu to view it." 3| � aback% 3�� $h%="This window gives information on the current backdrop.|MIt shows the sprite file, sprite name, determines whether it has a palette, and tells you whether the backdrop is tiled or centred." 3� � cset% 3� Ȏ i% � 3�/ � 2,3,8 : ș "XInterface_SendHelp",,q%:=0 3�P � 4 : $h%="This is the 'Up' icon.|MClick it to increase the hours by one." 3�R � 5 : $h%="This is the 'Down' icon.|MClick it to decrease the hours by one." 3�R � 6 : $h%="This is the 'Up' icon.|MClick it to increase the minutes by one." 3�T � 7 : $h%="This is the 'Down' icon.|MClick it to decrease the minutes by one." 3�O : $h%="This is the 'Set time' window.|MUse it to set the current time." 3� � 3� 3� $h%=�modl_help(w%,i%) 3�� 4=h%+�($h%) 4 4� �findtype(type) 4& Ȏ type � 40! � 0 : ="run the application" 4: � 1 : ="open the directory" 4D � 2 : ="execute the file" 4N � 3 : ="open the window" 4X! � 4 : ="execute the command" 4b� 4l="perform an operation" 4v 4�� �setclearmenu 4�$object%="File ''" 4�(� �as(menu%,1)=0 �grey_menu(menu%,1) 4�0� �as(menu%+400,1)=0 �grey_menu(menu%+400,1) 4�� 4� 4�� �as(b%,n%) 4�+=-((b%!(28+8+24*n%) � &400000)=&400000) 4� 4�� �grey_menu(b%,n%) 4�+b%!(28+8+24*n%)=b%!(28+8+24*n%)�&400000 4�� 4� 5� �update_backdrop 5pointer%!0=main% 5(ș "Wimp_GetWindowOutline",,pointer% 5 Qș "Wimp_ForceRedraw",main%,pointer%!4,pointer%!16-44,pointer%!12,pointer%!16 5*� 54 5>� �bring_to_top(handle%) 5Hpointer%!0=handle% 5R&ș "XWimp_GetWindowInfo",,pointer% 5\pointer%!28=-2 5f#ș "XWimp_OpenWindow",,pointer% 5p� 5z 5�'� �set_clock_flags(e,r,b,twe,twf,h) 5�;emboss=e:recess=r:twelve=twe:twfour=twf:border=b:hour=h 5�� 5� 5�� �setup_sclck 5�#�puticondata(cset%,2,��$,17,2)) 5�#�puticondata(cset%,3,��$,20,2)) 5�� 5� 5�� �addh(addicon%) 5�+current=�(�geticondata(cset%,addicon%)) 5�current+=1 5�� current>24 current=0 6� current<0 current=24 69current$=�current:� �current$=1 current$="0"+current$ 6)�puticondata(cset%,addicon%,current$) 6$� 6. 68� �subh(subicon%) 6B+current=�(�geticondata(cset%,subicon%)) 6Lcurrent-=1 6V� current>24 current=0 6`� current<0 current=24 6j9current$=�current:� �current$=1 current$="0"+current$ 6t)�puticondata(cset%,subicon%,current$) 6~� 6� 6�� �addm(addicon%) 6�+current=�(�geticondata(cset%,addicon%)) 6�current+=1 6�� current>60 current=0 6�� current<0 current=60 6�9current$=�current:� �current$=1 current$="0"+current$ 6�)�puticondata(cset%,addicon%,current$) 6�� 6� 6�� �subm(subicon%) 6�+current=�(�geticondata(cset%,subicon%)) 7 current-=1 7 � current>60 current=0 7� current<0 current=60 79current$=�current:� �current$=1 current$="0"+current$ 7()�puticondata(cset%,subicon%,current$) 72� 7< 7F� �settime(hour$,minute$) 7Ptime$="" 7Z,time$=��$,16)+hour$+":"+minute$+":"+"00" 7d�$=time$:�shut(cset%) 7n� 7x 7� � �rs 7�pointer%!0=clock% 7�pointer%!4=0 7�%ș "XWimp_GetIconState",,pointer% 7�pointer%!8=0:pointer%!12=0 7�6� emboss $(pointer%!32)="z0":pointer%!24=&17000139 7�6� recess $(pointer%!32)="z4":pointer%!24=&17000139 7�6� border $(pointer%!32)="z1":pointer%!24=&17000139 7�%ș "XWimp_SetIconState",,pointer% 7�pointer%!0=clock% 7�'ș "XWimp_GetWindowState",,pointer% 7��shut(clock%) 7�pointer%!28=-2 8*� clck ș "XWimp_OpenWindow",,pointer% 8� 8 8"� �fract(val) 8,$t$=�(val � 100)+"."+�(val � 100) 86� �t$=3 t$+="0" 8@=t$ 8J 8T9� �modl_init(tname$,tpurp$,tauth$,tver$,pver,menblk%) 8^o� modlptr=20 �tellemoff("Extention module loading error: limit reached, no more modules will be loaded."):� 8hp� pver>80 �tellemoff("Extension module "+tname$+" requires !StickyBrd manager "+�fract(pver)+" or later."):� 8r7modl$(modlptr)=�lower(tname$):modl(modlptr)=menblk% 8|1modli$(modlptr)=tname$:modlp$(modlptr)=tpurp$ 8�;modla$(modlptr)=tauth$:modlv$(modlptr)=tver$:modlptr+=1 8�2ș "XWimp_CreateWindow",,modlinfo% � taskhand% 8� modlinf(modlptr-1)=taskhand% 8��addtomenu(tname$,menblk%) 8� modl(modlptr-1)!32=taskhand% 8�=taskhand% 8� 8�� �addtomenu(tn$,men%) 8�(� �as(menu%,6)=1 �grey_menu(menu%,6) 8�mblk%=modlmenu% 8�flags=&7000021 8�mlen%=0:� I=0 � (modlptr-1) 8�4� �modl$(I)>mlen% mlen%=(�modl$(I))+1:�:mlen%+=1 9�header("Modules",mlen%) 9� I=0 � (modlptr-1) 90�entry(&00,modl(I),flags,�capital(modl$(I))) 9&� 90mblk%!-24=mblk%!-24 � &80 9:� 9D 9N� �bd_hand:=main% 9X 9b� �load_modls 9l&h%=�("<StickyBrdExt$Dir>.AutoRun") 9v� 9�buff$=�#h% 9�� �buff$,1)<>"|" � 9� � �buff$,5)="{run}" � 9� buff$=�strip(buff$) 9� �load_modl(buff$) 9� � 9�� 9�� buff$="{end}" 9��#h% 9�� 9� 9�� �load_modl(file$) 9�,ț "<StickyBrdExt$Dir>."+buff$+".Module" :t%=�("FN"+buff$+"_init") :� : : � �strip(s$) :*s$=�s$,(�s$)-6) :4s$=�s$,(�s$)-1) :>=s$ :H :R� �pass_null :\� modlptr=0 � :f� K=0 � (modlptr-1) :p&t%=�("FN"+modl$(K)+"_event(0,q%)") :z� K :�� :� :�� �lower(text$) :�Y$pointer%=text$:ptr%=0:� ptr%?pointer%=ptr%?pointer% � &20:ptr%+=1:� ptr%?pointer%<33 :�=$pointer% :� :�� �modl_sendmenu :�modlflag=q%!4:� q%!8=-1 � :�Bstart=4:� q%!(start-4)=q%!(start+4):start+=4:� q%!(start-4)=-1 :�-t%=�("FN"+modl$(modlflag)+"_event(1,q%)") :�� :� :�� �modl_quit ;� K=0 � (modlptr-1) ;'t%=�("FN"+modl$(K)+"_event(13,q%)") ;� K ;$� ;. ;8� �modl_help(w%,i%) ;Btext$="" ;Lpointer%!0=w%:pointer%!4=i% ;V� K=0 � (modlptr-1) ;`,t%=�("FN"+modl$(K)+"_event(3,pointer%)") ;j� $t%<>"" text$=$t% ;tpointer%!0=w%:pointer%!4=i% ;~� K ;�7� text$="" text$="No help availible on this window" ;� =text$ ;� ;�� �modl_click(typ,fil$,x,y) ;�@pointer%!0=x:pointer%!4=y:pointer%!8=typ:$(pointer%+12)=fil$ ;�� K=0 � (modlptr-1) ;�,t%=�("FN"+modl$(K)+"_event(4,pointer%)") ;�@pointer%!0=x:pointer%!4=y:pointer%!8=typ:$(pointer%+12)=fil$ ;�� K ;�� ;� ;�� �modl_mclick(h,i,b) <