IMPLEMENTATION MODULE SysStorage ;

FROM libc IMPORT malloc, cfree ;
FROM Debug IMPORT Halt ;



PROCEDURE ALLOCATE (VAR a: ADDRESS ; Size: CARDINAL) ;
BEGIN
   a := malloc(Size) ;
   IF a=NIL
   THEN
      Halt('out of memory error', __LINE__, __FILE__)
   END
END ALLOCATE ;



PROCEDURE DEALLOCATE (a: ADDRESS; Size: CARDINAL);
BEGIN
   cfree(a)
END DEALLOCATE ;



PROCEDURE Available (Size: CARDINAL) : BOOLEAN;
VAR
   a: ADDRESS ;
BEGIN
   a := malloc(Size) ;
   IF a=NIL
   THEN
      RETURN( FALSE )
   ELSE
      cfree(a) ;
      RETURN( TRUE )
   END
END Available ;


(*
   Init - 
*)

PROCEDURE Init ;
BEGIN
END Init ;


END SysStorage.