Subversion Repositories Kolibri OS

Rev

Rev 7597 | Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

  1. (*
  2.     BSD 2-Clause License
  3.  
  4.     Copyright (c) 2018, 2019, Anton Krotov
  5.     All rights reserved.
  6. *)
  7.  
  8. MODULE API;
  9.  
  10. IMPORT SYSTEM;
  11.  
  12. VAR
  13.  
  14.     eol*:  ARRAY 3 OF CHAR;
  15.     base*: INTEGER;
  16.     heap:  INTEGER;
  17.  
  18.  
  19. PROCEDURE [windows-, "kernel32.dll", "ExitProcess"]    ExitProcess (code: INTEGER);
  20. PROCEDURE [windows-, "kernel32.dll", "ExitThread"]     ExitThread (code: INTEGER);
  21. PROCEDURE [windows-, "kernel32.dll", "GetProcessHeap"] GetProcessHeap (): INTEGER;
  22. PROCEDURE [windows-, "kernel32.dll", "HeapAlloc"]      HeapAlloc (hHeap, dwFlags, dwBytes: INTEGER): INTEGER;
  23. PROCEDURE [windows-, "kernel32.dll", "HeapFree"]       HeapFree(hHeap, dwFlags, lpMem: INTEGER);
  24.  
  25. PROCEDURE [windows-, "user32.dll", "MessageBoxA"]      MessageBoxA (hWnd, lpText, lpCaption, uType: INTEGER): INTEGER;
  26.  
  27.  
  28. PROCEDURE DebugMsg* (lpText, lpCaption: INTEGER);
  29. BEGIN
  30.     MessageBoxA(0, lpText, lpCaption, 16)
  31. END DebugMsg;
  32.  
  33.  
  34. PROCEDURE _NEW* (size: INTEGER): INTEGER;
  35.     RETURN HeapAlloc(heap, 8, size)
  36. END _NEW;
  37.  
  38.  
  39. PROCEDURE _DISPOSE* (p: INTEGER): INTEGER;
  40. BEGIN
  41.     HeapFree(heap, 0, p)
  42.     RETURN 0
  43. END _DISPOSE;
  44.  
  45.  
  46. PROCEDURE init* (reserved, code: INTEGER);
  47. BEGIN
  48.     eol[0] := 0DX; eol[1] := 0AX; eol[2] := 0X;
  49.     base := code - 4096;
  50.     heap := GetProcessHeap()
  51. END init;
  52.  
  53.  
  54. PROCEDURE exit* (code: INTEGER);
  55. BEGIN
  56.     ExitProcess(code)
  57. END exit;
  58.  
  59.  
  60. PROCEDURE exit_thread* (code: INTEGER);
  61. BEGIN
  62.     ExitThread(code)
  63. END exit_thread;
  64.  
  65.  
  66. END API.
  67.