REM >Ram:!RunImage
REM Thynx, the multipurpose tool.
REM  Thinkpix Systems 1992
ON ERROR PROCerror:END
shit%=FALSE
taskname$="Thynx 2":quit%=FALSE
SYS"Wimp_Initialise",200,&4B534154,taskname$ TO version%,task%
:
PROCStartup
ON ERROR MOUSE ON:IF FNerror THEN PROCclosedown:END
REPEAT
SYS"Wimp_Poll",,data% TO r%
CASE r% OF
WHEN 0     : shit%=FALSE
SYS"Wimp_GetPointerInfo",,data%
IF (data%!8=1 OR data%!8=4) AND (data%!12=-2 AND data%!16=0) THEN PROCopenfr(mainwin%)
IF blonk% THEN
SYS"OS_ReadMonotonicTime" TO time%
CASE TRUE OF
WHEN darken%:MOUSE xm%,ym%,a%: IF xm%<>oxm% OR ym%<>oym% OR !Key OR a% THEN PROClighten:darken%=FALSE:rtime%=time%+ttblnk%:!Key=0
oxm%=xm%:oym%=ym%
PROCbounce
WHEN time%>rtime%:PROCdarken:darken%=TRUE
OTHERWISE:MOUSE xm%,ym%,a%
IF xm%<>oxm% OR ym%<>oym% OR !Key OR a% THEN rtime%=time%+ttblnk%:!Key=0
oxm%=xm%:oym%=ym%
ENDCASE
ENDIF
WHEN 1     : PROCredraw
WHEN 2     : SYS"Wimp_OpenWindow",,data%
WHEN 3     : SYS"Wimp_CloseWindow",,data%
WHEN 6     : PROCbuttons(!data%,data%!4,data%!8,data%!12,data%!16)
WHEN 8     : PROCkey
WHEN 9     : PROCmenuselect
WHEN 17,18 : IF data%!16=3 THEN
PROCdragin
ELSE
IF data%!16=&400C1 AND blonk% THEN SYS"OS_ReadMonotonicTime" TO time%:rtime%=time%+ttblnk%
quit%=(data%!16=0)
ENDIF
ENDCASE
UNTIL quit%
OSCLI"NTrash"
SYS "OS_Release",&14,kcode,0
SYS "OS_Module",7,,rma%
PROCclosedown
END
:
DEFPROCredraw
LOCAL more%,x%,y%,more%
SYS"Wimp_RedrawWindow",,data% TO more%
WHILE more%
x%=data%!4-data%!20
y%=data%!16-data%!24
PROCdraw(x%,y%)
SYS"Wimp_GetRectangle",,data% TO more%
ENDWHILE
ENDPROC
:
DEFPROCdraw(x%,y%)
MOVE x%+4,y%-16:PRINT"    Name:"
MOVE x%+4,y%-68:PRINT" Purpose:"
MOVEx%+4,y%-120:PRINT"  Author:"
MOVEx%+4,y%-172:PRINT" Version:"
ENDPROC
:
DEFPROCbuttons(x%,y%,z%,h%,i%)
CASE h% OF
WHEN -2:IF z%=2 THEN PROCshowmenu(menu%,x%,y%,TRUE):ELSE:PROCopenfr(mainwin%)
WHEN mainwin%:IF z%=2 THEN PROCshowmenu(menu%,x%,y%,FALSE)
IF NOT shit% AND z%<>2 THEN
CASE i% OF
WHEN 0:OSCLI"Trash"
WHEN 2:PROCopenfr(filewin%)
WHEN 3:SYS "Wimp_StartTask","Time"
WHEN 5:PROCfront:OSCLI"Ex":PROCcont:PROCrestore
WHEN 6:IF (z% AND 4) THEN OSCLI"NoDir"
IF (z% AND %1) THEN OSCLI"NoLib"
WHEN 7: IF z%=1 THEN SYS "Wimp_StartTask","Verify"
SYS "Wimp_StartTask","CheckMap"
ENDCASE
shit%=TRUE
ENDIF
WHEN filewin%:$name%=$(tdata%+(4*(i%-1)))
SYS"Wimp_ForceRedraw",filewin%,0,-40,200,0
ENDCASE

ENDPROC
:
DEFPROCmenuselect
LOCAL local$
CASE !data% OF
WHEN 6: quit%=TRUE
WHEN 1: IF data%!4=1 THEN
IF FNfiles THEN OSCLI"WIPE <Thynx2$Dir>.Trash.* ~CFR~V":PROCtrashed
ELSE
OSCLI"Trash"
ENDIF
WHEN 2:OSCLI "Filer_OpenDir "+FNmenuopted(driver%,data%!4)+":"
WHEN 3: CASE data%!4 OF
WHEN 3:PROCallclose
WHEN 0:IF $moustr%<>"" THEN MOUSE STEP EVAL($moustr%)
WHEN 1:PROCfindcaret
WHEN 4:SYS"Wimp_SetCaretPosition",-1
WHEN 2:IF NOT data%!8 THEN
blonk%=TRUE:PROCtickitem(desktop%,2):ttblnk%=FNreadtime
ELSE
IF blonk% THEN PROCuntickitem(desktop%,2):blonk%=FALSE:ELSE:PROCtickitem(desktop%,2):blonk%=TRUE:ttblnk%=FNreadtime
ENDIF
IF blonk% THEN SYS"OS_ReadMonotonicTime" TO time%:rtime%=time%+ttblnk%
WHEN 5:IF FNconfirm("WARNING THE RESULTS OF THIS FUNCTION ARE DRASTIC, are You sure? OK to Continue") THEN SYS"Wimp_BaseOfSprites" TO ,a%:SYS &2E,265,a%
ENDCASE
WHEN 4: CASE data%!4 OF
WHEN 0:audio%=NOT audio%
IF audio% OSCLI"Audio ON":ELSE:OSCLI"Audio OFF"
IF audio% PROCtickitem(sound%,0):ELSE: PROCuntickitem(sound%,0)
WHEN 1:speaker%=NOT speaker%
IF speaker% OSCLI"Speaker ON":ELSE:OSCLI"Speaker OFF"
IF speaker% PROCtickitem(sound%,1):ELSE: PROCuntickitem(sound%,1)
WHEN 2:OSCLI"Tuning "+$tunstr%
WHEN 3:OSCLI"Volume "+$volstr%
ENDCASE
WHEN 5:  CASE data%!4 OF
WHEN 0:CASE data%!8 OF
WHEN 0:listit%=NOT listit%
IF listit% PROCtickitem(typcon%,0):ELSE:PROCuntickitem(typcon%,0)
WHEN 1:tabson%=NOT tabson%
IF tabson% PROCtickitem(typcon%,1):ELSE:PROCuntickitem(typcon%,1)
ENDCASE
WHEN 1:IF FNconfirm("Shut down Hard Disc, Close files, log off file servers -ARE YOU SURE?") THEN FOR i=0 TO 6:OSCLI"SHUTDOWN":NEXT
WHEN 2:IF FNconfirm("Close all open Files, This may have some drastic effects! Are you sure?") THEN FOR i=0 TO 3:OSCLI"SHUT":NEXT
WHEN 3:PROCcompac($comstr%)
WHEN 4: IF data%!8=1 THEN
b%=OPENIN "<Thynx2$dir>.CMOS"
IF b%>0 THEN
FOR a%=0 TO 239
SYS"OS_Byte",162,a%,BGET#b%
NEXT
ENDIF
CLOSE#b%
ELSE
b%=OPENOUT "<Thynx2$dir>.CMOS"
FOR a%=0 TO 239
SYS"OS_Byte",161,a% TO ,,c%
BPUT#b%,c%
NEXT
CLOSE#b%
ENDIF
WHEN 5:
IF data%!8>-1 AND data%!8<6 THEN 
PROCuntickitem(confrag%,data%!8)
ELSE
a%=OPENOUT "<Thynx2$Dir>.Config"
FOR loop%=0 TO 5
BPUT#a%,FNticked(confrag%,loop%)
NEXT
BPUT#a%,$name%
BPUT#a%,$blanstr%
CLOSE #a%
ENDIF
ENDCASE
ENDCASE
SYS"Wimp_GetPointerInfo",,data%
IF (data%!8 AND 1) THEN PROCshowmenu(!mlcn%,mlcn%!4,mlcn%!8,mlcn%!12)
ENDPROC
:
DEFPROCkey
LOCAL tt%:tt%=FALSE
CASE data%!24 OF
WHEN 442:TIME=0:SYS"Hourglass_Start",1:REPEATUNTILTIME>200:SYS"Hourglass_Smash"
WHEN 434:PROCdarken:!Key=0:darken%=TRUE
WHEN 436:PROCfindcaret
OTHERWISE: tt%=TRUE
ENDCASE
IF tt% THEN SYS"Wimp_ProcessKey",data%!24
ENDPROC
:
DEFPROCerror
ONERROR OFF
PROCclosedown
PRINTREPORT$;" at line ";ERL
ENDPROC
:
DEFFNerror
ON ERROR OFF
LOCAL response%
!data%=ERR
$(data%+4)=REPORT$+" (Internal Error Code "+STR$ERL+")"+CHR$0
SYS "Wimp_ReportError",data%,3,"Thynx 2" TO ,response%
IF response%=2 THEN =TRUE ELSE =FALSE
:
DEFPROCStartup
LOCAL junk%,speed%

REM codey bit to read key press:
SYS "OS_Module",6,,,16 TO ,,rma%
FOR junk%=0 TO 2 STEP 2
P%=rma%
[OPT junk%
.kcode:CMP R1,#0
STREQ R0,Key
MOV R15,R14
.Key:EQUD 0
]
NEXT
SYS "OS_Claim",&14,kcode,0

DIM data% 100,mlcn% 16

OSCLI"ICONSPRITES <thynx2$Dir>.Sprites"
DIM ind% 450:nxti%=ind%
DIM menu% 190,trash% 78,driver% 124,desktop% 190,sound% 124,extra% 190
DIM typcon% 78,cmcon% 78,tunmen% 78,volmen% 78,mouse% 78
DIM compacmen% 78,blankwrt% 78,col% 80
$ind%="About this Program"+CHR$13:junk%=LEN("About this Program "):nxti%+=junk%
audio%=TRUE:speaker%=TRUE:listit%=FALSE:tabson%=TRUE:darken%=FALSE:blonk%=FALSE
ttblnk%=0:time%=0:rtime%=0:xm%=0:oxm%=0:ym%=0:oym%=0
infowind%=FNnewwindow(0,0,636,216,0,0,&8400008F,ind%,1,1)
keywin%=FNnewwindow(8000,2000,100,100,0,0,&1050,ind%,1,1)

mainwin%=FNnewwindow(2,138,600,78,0,0,&870000DF,nxti%,1,1)
$nxti%="Thynx II"+CHR$13:nxti%+=9
filewin%=FNnewwindow(100,138,200,-1,0,0,&BF0000DF,nxti%,1,1)
$nxti%="Types"+CHR$13:nxti%+=6

PROCopen(keywin%)

junk%=FNstartmenu(trash%,"Trash",190)
junk%=FNindirmenuop(junk%,0,-1,"Open Area")
junk%=FNindirmenuop(junk%,&80,-1,"Clear Trash")

junk%=FNstartmenu(driver%,"Driver",140)
junk%=FNmenuop(junk%,0,-1,"Printer")
junk%=FNmenuop(junk%,0,-1,"NetPrint")
junk%=FNmenuop(junk%,0,-1,"Serial")
junk%=FNmenuop(junk%,&80,-1,"Null")

DIM confrag% 220
junk%=FNstartmenu(confrag%,"Config",230)
junk%=FNmenuop(junk%,0,-1,"Icon")
junk%=FNindirmenuop(junk%,0,-1,"Main wind")
junk%=FNindirmenuop(junk%,0,-1,"File wind")
junk%=FNindirmenuop(junk%,0,-1,"Clear Trash")
junk%=FNindirmenuop(junk%,0,-1,"Restore CMOS")
junk%=FNindirmenuop(junk%,2,-1,"Screen Blank")
junk%=FNindirmenuop(junk%,&80,-1,"Save Config")

SYS"OS_Byte",161,194 TO ,,speed%

junk%=FNstartmenu(mouse%,"Speed",130)
PROCwriteop(junk%,moustr%,&80,-1,STR$speed%,"a1-4-",2)

junk%=FNstartmenu(blankwrt%,"Seconds",130)
PROCwriteop(junk%,blanstr%,&80,-1,"120","a0-9*",5)

junk%=FNstartmenu(desktop%,"Desktop",220)
junk%=FNindirmenuop(junk%,0,mouse%,"Mouse Speed")
junk%=FNmenuop(junk%,0,-1,"Find Caret")
junk%=FNindirmenuop(junk%,%10,blankwrt%,"Blank Screen")
junk%=FNindirmenuop(junk%,0,-1,"Close Windows")
junk%=FNindirmenuop(junk%,0,-1,"Kill Caret")
junk%=FNindirmenuop(junk%,&80,-1,"Clear Sprites")

junk%=FNstartmenu(tunmen%,"Tuning",130)
PROCwriteop(junk%,tunstr%,&80,-1,"0","a0-9-",6)

junk%=FNstartmenu(volmen%,"Volume",130)
PROCwriteop(junk%,volstr%,&80,-1,"127","a0-9",3)

junk%=FNstartmenu(sound%,"Sound",130)
junk%=FNmenuop(junk%,1,-1,"Audio")
junk%=FNmenuop(junk%,1,-1,"Speaker")
junk%=FNmenuop(junk%,0,tunmen%,"Tuning")
junk%=FNmenuop(junk%,&80,volmen%,"Volume")

junk%=FNstartmenu(compacmen%,"Compact",100)
PROCwriteop(junk%,comstr%,&80,-1,":0","a0-4:",2)

junk%=FNstartmenu(typcon%,"Type",130)
junk%=FNmenuop(junk%,0,-1,"Listed")
junk%=FNmenuop(junk%,&81,-1,"Tabs")

junk%=FNstartmenu(cmcon%,"CMOS",130)
junk%=FNmenuop(junk%,0,-1,"Save")
junk%=FNmenuop(junk%,&80,-1,"Load")

junk%=FNstartmenu(extra%,"Extras",180)
junk%=FNmenuop(junk%,0,typcon%,"Type")
junk%=FNmenuop(junk%,0,-1,"ShutDown")
junk%=FNindirmenuop(junk%,0,-1,"Shut Files")
junk%=FNmenuop(junk%,0,compacmen%,"Compact ")
junk%=FNmenuop(junk%,0,cmcon%,"CMOS")
junk%=FNmenuop(junk%,&80,confrag%,"Config")

junk%=FNstartmenu(menu%,"Thynx",130)
junk%=FNmenuop(junk%,0,infowind%,"Info")
junk%=FNmenuop(junk%,0,trash%,"Trash")
junk%=FNmenuop(junk%,0,driver%,"Driver")
junk%=FNmenuop(junk%,0,desktop%,"Desktop")
junk%=FNmenuop(junk%,0,sound%,"Sound")
junk%=FNmenuop(junk%,0,extra%,"Extra")
junk%=FNmenuop(junk%,&80,-1,"Quit")

junk%=OPENIN "<Thynx2$Dir>.Filetypes"
a%=EVAL(GET$#junk%)
!data%=0:data%!4=-((a%+1)*38):data%!8=200:data%!12=0
SYS"Wimp_SetExtent",filewin%,data%:
DIM tdata% a%*4:name%=nxti%:dummy%=tdata%
$nxti%="FFF"+CHR$13:$(nxti%+4)="a0-9A-F"
b%=FNnewicon(filewin%,0,-38,200,38,&701F131,"",nxti%,nxti%+4,4)
nxti%+=12
FOR i%=1 TO a%
$dummy%=GET$#junk%:dummy%+=4
b%=EVAL(GET$#junk%)
a%=FNnewicon(filewin%,0,-(38*(1+i%)),200,38,&7019031+(b%<<28),GET$#junk%,0,0,0)
NEXT
CLOSE #junk%

junk%=OPENIN "<Thynx2$Dir>.Config"
IF junk%=0 THEN CLOSE#junk%:ERROR 1222,"Configuration File not found"
IF BGET#junk% THEN icon%=FNnewicon(-1,0,0,68,68,&3002,"!Thynx2",0,0,0):PROCtickitem(confrag%,0)
IF BGET#junk% THEN PROCopenfr(mainwin%):PROCtickitem(confrag%,1)
IF BGET#junk% THEN PROCopenfr(filewin%):PROCtickitem(confrag%,2)
IF BGET#junk% FNfiles THEN OSCLI"WIPE <Thynx2$Dir>.Trash.* ~CFR~V":PROCtickitem(confrag%,3)
IF BGET#junk% THEN
PROCtickitem(confrag%,4)
b%=OPENIN "<Thynx2$dir>.CMOS"
IF b%>0 THEN FOR a%=0 TO 239:SYS"OS_Byte",162,a%,BGET#b%:NEXT
CLOSE#b%
ENDIF
IF BGET#junk% THEN PROCtickitem(confrag%,5):blonk%=TRUE
$name%=GET$#junk%
$blanstr%=GET$#junk%
IF blonk% THEN 
PROCtickitem(desktop%,2):ttblnk%=FNreadtime
SYS"OS_ReadMonotonicTime" TO time%:rtime%=time%+ttblnk%
ENDIF
CLOSE #junk%

DIM trashic% 9
$trashic%=""
junk%=FNnewicon(mainwin%,4,-70,68,68,&6102,"",trashic%,1,8)
PROCtrashed
FOR i%=1 TO 7
READ a$
junk%=FNnewicon(mainwin%,4+(74*i%),-70,68,68,&6002,a$,0,0,0)
NEXT
FOR i%=1 TO 4
READ a$
a$=a$+CHR$13
$nxti%=a$
junk%=FNnewicon(infowind%,154,-(52*i%),476,48,&0700013D,"",nxti%,-1,LEN(a$))
nxti%+=LENa$
NEXT
xvec%=2:yvec%=3
ENDPROC
DATA reader,file_type,stamper,isprite,setdir,unset,chkmap
DATA "Thynx II","Multitool utility"," Thinkpix Systems, 1992","2.02 (07-Oct-92)"
:
DEFFNnewwindow(vwx%,vwy%,vww%,vwh%,extx%,exty%,flags%,title%,sps,bak%)
$data%=STRING$(88,CHR$0)
data%!0=vwx%:data%!4=vwy%:data%!8=vwx%+vww%:data%!12=vwy%+vwh%:data%!24=-1
data%!28=flags%:data%?32=7:data%?33=2:data%?34=7:data%?35=bak%:data%?36=3:data%?37=1
data%?38=12:data%!40=0:data%!44=-vwh%-exty%:data%!48=vww%+extx%:data%!52=0:data%!56=&13D
data%!60=3<<12:data%!64=sps:data%!72=title%
SYS"Wimp_CreateWindow",,data% TO handle%:=handle%
:
DEFPROCopen(handle%)
!data%=handle%:SYS"Wimp_GetWindowState",,data%:data%!28=-2:SYS"Wimp_OpenWindow",,data%
ENDPROC
:
DEFPROCopenfr(handle%)
!data%=handle%:SYS"Wimp_GetWindowState",,data%
data%!28=-1
SYS"Wimp_OpenWindow",,data%
ENDPROC
:
DEFPROCclose(handle%)
!data%=handle%:SYS"Wimp_CloseWindow",,data%
ENDPROC
:
DEFFNnewicon(wind%,ix%,iy%,iw%,ih%,flag%,text$,d1%,d2%,d3%)
data%!0=wind%:data%!4=ix%:data%!8=iy%:data%!12=ix%+iw%:data%!16=iy%+ih%:data%!20=flag%
IF d1%=0 THEN
$(data%+24)=text$
ELSE
data%!24=d1%:data%!28=d2%:data%!32=d3%
ENDIF
SYS"Wimp_CreateIcon",,data% TO ihandle%
=ihandle%
:
DEFPROCclosedown
ON ERROR OFF
SYS"Wimp_CloseDown",task%,&4B534154
ENDPROC
:
DEFFNstartmenu(m%,t$,w%)
$m%=t$
m%?12=7:m%?13=2:m%?14=2:m%?15=0:m%!16=w%
m%!20=44:m%!24=0
=m%+28
:
DEFFNmenuop(m%,h%,p%,t$)
!m%=h%
m%!4=p%
m%!8=&7000021
$(m%+12)=t$
=m%+24
:
DEFFNindirmenuop(m%,h%,p%,t$)
LOCAL tt%
t$=t$+CHR$13
tt%=LEN(t$)
!m%=h%
m%!4=p%
m%!8=&7000121
$nxti%=t$
m%!12=nxti%
m%!16=-1
m%!20=tt%
nxti%=nxti%+tt%
=m%+24
:
DEFPROCwriteop(RETURN m%,RETURN w%,h%,p%,t$,e$,lent%)
LOCAL tt%
t$=t$+CHR$13
tt%=lent%
!m%=h%+%100
m%!4=p%
m%!8=%111000000001001000100010001
w%=nxti%
$nxti%=t$
m%!12=nxti%
nxti%=nxti%+lent%+1
$nxti%=e$
m%!16=nxti%
nxti%=nxti%+LEN(e$)
m%!20=lent%+1
m%=m%+24
ENDPROC
:
DEFPROCshowmenu(menu%,x%,y%,oniconbar%)
LOCAL entries%
!mlcn%=menu%:mlcn%!4=x%:mlcn%!8=y%:mlcn%!12=oniconbar%
entries%=FNnumops(menu%)
IF oniconbar% THEN ypos%=96+entries%*44 ELSE ypos%=y%+20
SYS"Wimp_CreateMenu",,menu%,x%-64,ypos%
ENDPROC
:
DEFFNmenuopted(m%,op%)
LOCAL a$,ptr%
IF m%=-1 THEN ERROR 0,"Menu Cock up"
ptr%=m%+(40+(op%*24))
IF (m%!(36+(op%*24)) AND 256)=256 THEN
REM Menu data indirected.
a$=$(!ptr%)
ELSE
a$=$ptr%
ENDIF
=a$
:
DEFFNnumops(m%)
LOCAL c%:c%=1
ptr%=m%+28
WHILE (!ptr% AND &80)<>&80
ptr%+=24:c%+=1
ENDWHILE
=c%
:
DEFPROCtickitem(m%,option%)
m%!(28+(24*option%))=m%!(28+(24*option%)) OR %1
ENDPROC
:
DEFPROCuntickitem(m%,option%)
m%!(28+(24*option%))=m%!(28+(24*option%)) EOR %1
ENDPROC
:
DEFFNticked(m%,option%)
=m%!(28+(24*option%)) AND 1
:
DEFPROCallclose
LOCAL er%
er%=keywin%
!data%=er%
SYS"Wimp_GetWindowState",,data%
er%=data%!28:!data%=er%
REPEAT
SYS"Wimp_SendMessage",3,data%,er%
!data%=er%
SYS"Wimp_GetWindowState",,data%
er%=data%!28:!data%=er%
UNTIL er%=-1
PROCopen(keywin%)
ENDPROC
:
DEFFNconfirm(mess$)
LOCAL r%
!data%=0
$(data%+4)=mess$+CHR$0
SYS "Wimp_ReportError",data%,%10011,"Thynx II" TO ,response%
IF response%<>2 THEN =TRUE ELSE =FALSE
:
DEFPROCfindcaret
LOCAL cr%
SYS"Wimp_GetCaretPosition",,data%:cr%=!data%
IF cr%=-1 THEN VDU7:ENDPROC
SYS"Wimp_GetWindowState",,data%:data%!28=-1:!data%=cr%
SYS"Wimp_SendMessage",2,data%,!data%
MOUSE TO data%!4+((data%!12-data%!4)/2),data%!8+((data%!16-data%!8)/2)
SYS"Hourglass_On"
TIME=0:REPEATUNTIL TIME=200
SYS"Hourglass_Smash"
ENDPROC
:
DEFPROCcompac(a$)
LOCAL free%,block%,olb%,ololb%
IF a$="" THEN ENDPROC
IF FNconfirm("Compact Free Space map of disc:'"+a$+"', Click OK to continue.") THEN
SYS"Hourglass_On"
block%=-1:olb%=-8:ololb%=42
REPEAT
ololb%=olb%:olb%=block%
OSCLI"Compact "+a$
SYS"ADFS_FreeSpace",a$ TO free%,block%
UNTIL free%=block% OR (olb%=block% AND ololb%=block%)
SYS"Wimp_StartTask","Map "+a$
ENDIF

SYS"Hourglass_Smash"
ENDPROC
:
DEFPROCdragin
LOCAL type%,path$,a%,b%,branch$
a%=0:type%=data%!40
REPEAT:b%=data%?(44+a%):path$=path$+CHR$(b%):a%+=1:UNTIL b%=0
a%=LEN(path$):REPEAT:a%-=1:UNTIL MID$(path$,a%,1)="." OR a%=0
branch$=LEFT$(path$,a%-1)
path$=LEFT$(path$,LENpath$-1)
IF data%!20=mainwin% THEN
CASE data%!24 OF
WHEN 0:IF (INSTR(path$,"!Thynx2"))=0 THEN SYS"Wimp_StartTask","COPY "+path$+" <Thynx2$Dir>.Trash.* ~A~CDFL~N~PQR~S~T~V":PROCtrashed
WHEN 1:PROCfront:IF tabson% THEN path$="-Tabexpand "+path$
IF listit% THEN OSCLI"LIST "+path$:ELSE:OSCLI"TYPE "+path$
PROCcont:PROCrestore
WHEN 2:IF $name%<>"" AND type%<>&2000 AND type%<>&1000 THEN
OSCLI"Settype "+path$+" "+$name%
ENDIF
WHEN 3:IF type%<>&1000 AND type%<>&2000 THEN OSCLI"STAMP "+path$
WHEN 4:IF type%=&FF9 THEN OSCLI"ICONSPRITES "+path$:PROCrestore
WHEN 5:IF type%<>&1000 AND type%<>&2000 THEN path$=branch$
OSCLI"Dir "+path$
WHEN 6:OSCLI"NoLib":OSCLI"NoDir"
IF type%<>&1000 AND type%<>&2000 THEN path$=branch$
OSCLI"Filer_CloseDir "+path$
WHEN 7:path$=MID$(path$,INSTR(path$,":")+1,(INSTR(path$,".")-INSTR(path$,":")-1))
SYS"Wimp_StartTask","Verify "+path$
SYS"Wimp_StartTask","CheckMap "+path$
ENDCASE
ELSE
IF type%<&1000 THEN $name%=STR$~type%:SYS"Wimp_ForceRedraw",filewin%,0,-40,200,0
ENDIF
ENDPROC
:
DEFPROCfront
LOCAL x%,y%
SYS"OS_ReadModeVariable",MODE,1 TO ,,x%
SYS"OS_ReadModeVariable",MODE,2 TO ,,y%
VDU4,14:COLOUR 135:COLOUR 0:CLS:PRINTTAB(1,0)"Press <Shift> to scroll"
VDU 28,0,y%,x%,1
COLOUR 128:COLOUR 7:CLS
ENDPROC
:
DEFPROCcont
COLOUR 135:COLOUR 0:VDU26
PRINTTAB(1,0);"Press any key                  "
a%=GET
ENDPROC
:
DEFPROCrestore
SYS"Wimp_ForceRedraw",-1,0,0,8000,8000
SYS"Wimp_CommandWindow",-1
ENDPROC
:
DEFPROCtrashed
LOCAL junk%
IF FNfiles THEN $trashic%="trashfu":ELSE $trashic%="trashem"
ENDIF
SYS"Wimp_ForceRedraw",mainwin%,0,-100,70,0
ENDPROC
:
DEFFNfiles
off%=0
SYS "OS_GBPB",10,"<Thynx2$Dir>.Trash",data%,1,off%,100,"*" TO ,,,off%
=off%
:
DEFPROCshit(a$)
VDU4:PRINTTAB(1,1);a$:VDU5
ENDPROC
:
DEFFNreadtime
LOCAL a%
a%=EVAL($blanstr%)*100
IF a%=0 THEN $blanstr%="120":a%=12000
=a%
:
DEFPROCdarken
LOCAL x%,y%,e%,b%
!data%=11
data%!4=12
data%!8=4
data%!12=5
data%!16=-1
SYS"OS_ReadVduVariables",data%,data%
x%=(!data%+1)<<data%!8
y%=(data%!(4+1))<<data%!12
VDU7:
blankwin%=FNnewwindow(0,0,x%,y%,0,0,&50,ind%,1,7)
PROCopenfr(blankwin%)
SYS"Wimp_ReadPalette",,col%
MOUSE OFF:SYS"Hourglass_On"
VDU19,23,24,0;0;0;
ENDPROC
:
DEFPROClighten
!data%=blankwin%
SYS"Wimp_DeleteWindow",,data%
MOUSE ON:SYS"Hourglass_Off":OSCLI"POINTER 1"
SYS"Wimp_SetPalette",,col%
ENDPROC
:
DEFPROCbounce
oxm%+=xvec%:oym%+=yvec%
IF oxm%>1278 OR oxm%<1 THEN xvec%=-xvec%
IF oym%>1023 OR oym%<1 THEN yvec%=-yvec%
MOUSE TO oxm%,oym%
ENDPROC

