{TODO}

function SysOSAlloc(Size: PtrInt): Pointer;
begin
  Result := kos_alloc(Size);
end;

{$define HAS_SYSOSFREE}
procedure SysOSFree(P: Pointer; Size: PtrInt);
begin
  kos_free(P);
end;

(*
{DEBUG version}

var
  SysMemoryBlocks: array[Byte] of record
    Used: Boolean;
    Address: Pointer;
    Size: Longint;
  end;

function SysOSAlloc(Size: PtrInt): Pointer;
var
  I: Longint;
begin
  Result := kos_alloc(Size);

  for I := 0 to High(SysMemoryBlocks) do
  if not SysMemoryBlocks[I].Used then
  begin
    SysMemoryBlocks[I].Used := True;
    SysMemoryBlocks[I].Address := Result;
    SysMemoryBlocks[I].Size := Size;
    Break;
  end;
end;

{$define HAS_SYSOSFREE}
procedure SysOSFree(P: Pointer; Size: PtrInt);
var
  B: Byte;
  I: Longint;
begin
  B := 0;
  for I := 0 to High(SysMemoryBlocks) do
  if SysMemoryBlocks[I].Address = P then
  begin
    SysMemoryBlocks[I].Used := False;
    if SysMemoryBlocks[I].Size <> Size then B := 1 div B;
    Break;
  end;

  kos_free(P);
end;*)