Subversion Repositories Kolibri OS

Rev

Rev 7693 | 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.  
  13. CONST
  14.  
  15.     SectionAlignment = 1000H;
  16.  
  17.  
  18. VAR
  19.  
  20.     eol*:  ARRAY 3 OF CHAR;
  21.     base*: INTEGER;
  22.     heap:  INTEGER;
  23.  
  24.  
  25. PROCEDURE [windows-, "kernel32.dll", "ExitProcess"]    ExitProcess (code: INTEGER);
  26. PROCEDURE [windows-, "kernel32.dll", "ExitThread"]     ExitThread (code: INTEGER);
  27. PROCEDURE [windows-, "kernel32.dll", "GetProcessHeap"] GetProcessHeap (): INTEGER;
  28. PROCEDURE [windows-, "kernel32.dll", "HeapAlloc"]      HeapAlloc (hHeap, dwFlags, dwBytes: INTEGER): INTEGER;
  29. PROCEDURE [windows-, "kernel32.dll", "HeapFree"]       HeapFree(hHeap, dwFlags, lpMem: INTEGER);
  30.  
  31. PROCEDURE [windows-, "user32.dll", "MessageBoxA"]      MessageBoxA (hWnd, lpText, lpCaption, uType: INTEGER): INTEGER;
  32.  
  33.  
  34. PROCEDURE DebugMsg* (lpText, lpCaption: INTEGER);
  35. BEGIN
  36.     MessageBoxA(0, lpText, lpCaption, 16)
  37. END DebugMsg;
  38.  
  39.  
  40. PROCEDURE _NEW* (size: INTEGER): INTEGER;
  41.     RETURN HeapAlloc(heap, 8, size)
  42. END _NEW;
  43.  
  44.  
  45. PROCEDURE _DISPOSE* (p: INTEGER): INTEGER;
  46. BEGIN
  47.     HeapFree(heap, 0, p)
  48.     RETURN 0
  49. END _DISPOSE;
  50.  
  51.  
  52. PROCEDURE init* (reserved, code: INTEGER);
  53. BEGIN
  54.     eol[0] := 0DX; eol[1] := 0AX; eol[2] := 0X;
  55.     base := code - SectionAlignment;
  56.     heap := GetProcessHeap()
  57. END init;
  58.  
  59.  
  60. PROCEDURE exit* (code: INTEGER);
  61. BEGIN
  62.     ExitProcess(code)
  63. END exit;
  64.  
  65.  
  66. PROCEDURE exit_thread* (code: INTEGER);
  67. BEGIN
  68.     ExitThread(code)
  69. END exit_thread;
  70.  
  71.  
  72. END API.
  73.