REM > !RunImage
REM Amended into free space utility John Smith Jan 1990.
ON ERROR ERROR 0, REPORT$+" (internal error "+STR$ERL+")":END
DIM block% 150, window% 1024, pointer% 30
handle%=OPENIN"<FreeSp$Dir>.Sprites"
sprlen%=50+EXT#handle%
CLOSE#handle%
DIM sprites% sprlen%
$block% = "TASK"
SYS "Wimp_Initialise",200, !block%, "RamFS Free Space" TO , ourtask%
!sprites% = sprlen%: sprites%!4 = 0
sprites%!8 = 16 : sprites%!12 = 16
SYS "OS_SpriteOp", &10A, sprites%, "<FreeSp$Dir>.Sprites"
SYS "Wimp_OpenTemplate",,"<FreeSp$Dir>.Templates"
SYS "Wimp_LoadTemplate",, window%, 0, 0, -1, "FreeSp", 0
SYS "Wimp_CloseTemplate"
window%!64 = sprites%
SYS "Wimp_CreateWindow",, window% TO window_handle%
eyes$="n"
free%=-1
oldfree%=0
!block% = window_handle%
block%!4 = 42 : block%!8 = -64
block%!12 = 218 : block%!16 = 4
block%!20 = &C700601A
$(block%+24) = eyes$
SYS "Wimp_CreateIcon",, block% TO icon%
!block% = window_handle%
SYS "Wimp_GetWindowState",, block%
SYS "Wimp_OpenWindow",, block%
quit% = FALSE
REPEAT
SYS "Wimp_Poll",,block% TO reason%
CASE reason% OF
WHEN 0      : PROCupdateeyes
WHEN 2      : SYS "Wimp_OpenWindow",, block%
WHEN 3      : SYS "Wimp_CloseWindow",, block% : quit% = TRUE
WHEN 17, 18 : PROCreceive(block%)
ENDCASE
UNTIL quit% 
SYS "Wimp_CloseDown"
END
:
DEF PROCreceive(block%)
CASE block%!16 OF
WHEN 0 : quit% = TRUE
ENDCASE
ENDPROC
:
DEF PROCupdateeyes
SYS "XRamFS_FreeSpace","RamDisc0" TO free%,bigob%
IF free% <> oldfree% THEN
  oldfree%=free%
  REM ---> Look up free space
  SYS "XRamFS_FreeSpace","RamDisc0" TO free%,bigob%
  SYS "OS_SpriteOp",256+60,sprites%,"output" TO R0,R1,R2,R3
  COLOUR128+12:CLS
  COLOUR8
  IF free% < 2*1024*1024 THEN
     PRINT free% DIV 1024;" K"
  ELSE
     @%=&302
     PRINT (free% / 1024) / 1024;" M"
  ENDIF
  SYS "OS_SpriteOp",R0,R1,R2,R3
!block% = window_handle%
block%!4 = icon%
SYS "Wimp_DeleteIcon",, block%
!block% = window_handle%
block%!4 = 42 : block%!8 = -64
block%!12 = 218 : block%!16 = 4
block%!20 = &C700601A
$(block%+24) = "output"
SYS "Wimp_CreateIcon",, block% TO icon%
oldfree%=free%
SYS "Wimp_ForceRedraw", window_handle%, 42, -64, 218, 4
ENDIF
ENDPROC
