Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. (*
  2.     BSD 2-Clause License
  3.  
  4.     Copyright (c) 2018-2022, Anton Krotov
  5.     All rights reserved.
  6. *)
  7.  
  8. MODULE API;
  9.  
  10. IMPORT SYSTEM;
  11.  
  12. CONST
  13.         eol* = 0DX + 0AX;
  14.         BIT_DEPTH* = 32;
  15.  
  16. VAR
  17.         action*, cmdline*: INTEGER;
  18.  
  19.  
  20. PROCEDURE [stdcall-] sysfunc3* (arg1, arg2, arg3: INTEGER): INTEGER;
  21. BEGIN
  22.         SYSTEM.CODE(
  23.         053H,               (*  push    ebx                    *)
  24.         08BH, 045H, 008H,   (*  mov     eax, dword [ebp +  8]  *)
  25.         08BH, 05DH, 00CH,   (*  mov     ebx, dword [ebp + 12]  *)
  26.         08BH, 04DH, 010H,   (*  mov     ecx, dword [ebp + 16]  *)
  27.         0CDH, 040H,         (*  int     64                     *)
  28.         05BH,               (*  pop     ebx                    *)
  29.         0C9H,               (*  leave                          *)
  30.         0C2H, 00CH, 000H    (*  ret     12                     *)
  31.         )
  32.         RETURN 0
  33. END sysfunc3;
  34.  
  35.  
  36. PROCEDURE OutChar* (c: CHAR);
  37. BEGIN
  38.         sysfunc3(63, 1, ORD(c))
  39. END OutChar;
  40.  
  41.  
  42. PROCEDURE OutLn*;
  43. BEGIN
  44.         OutChar(0DX);
  45.         OutChar(0AX)
  46. END OutLn;
  47.  
  48.  
  49. PROCEDURE OutStr (pchar: INTEGER);
  50. VAR
  51.         c: CHAR;
  52. BEGIN
  53.         IF pchar # 0 THEN
  54.                 REPEAT
  55.                         SYSTEM.GET(pchar, c);
  56.                         IF c # 0X THEN
  57.                                 OutChar(c)
  58.                         END;
  59.                         INC(pchar)
  60.                 UNTIL c = 0X
  61.         END
  62. END OutStr;
  63.  
  64.  
  65. PROCEDURE DebugMsg* (lpText, lpCaption: INTEGER);
  66. BEGIN
  67.         IF lpCaption # 0 THEN
  68.                 OutLn;
  69.                 OutStr(lpCaption);
  70.                 OutChar(":");
  71.                 OutLn
  72.         END;
  73.         OutStr(lpText);
  74.         IF lpCaption # 0 THEN
  75.                 OutLn
  76.         END
  77. END DebugMsg;
  78.  
  79.  
  80. PROCEDURE _NEW* (size: INTEGER): INTEGER;
  81.         RETURN sysfunc3(68, 12, size)
  82. END _NEW;
  83.  
  84.  
  85. PROCEDURE _DISPOSE* (ptr: INTEGER): INTEGER;
  86. BEGIN
  87.         sysfunc3(68, 13, ptr)
  88.         RETURN 0
  89. END _DISPOSE;
  90.  
  91.  
  92. PROCEDURE init* (reserved, code: INTEGER);
  93. BEGIN
  94.         sysfunc3(68, 11, 0)
  95. END init;
  96.  
  97.  
  98. PROCEDURE exit* (code: INTEGER);
  99. BEGIN
  100.         sysfunc3(-1, 0, 0)
  101. END exit;
  102.  
  103.  
  104. PROCEDURE exit_thread* (code: INTEGER);
  105. BEGIN
  106.         sysfunc3(-1, 0, 0)
  107. END exit_thread;
  108.  
  109.  
  110. PROCEDURE dllentry* (hinstDLL, fdwReason, lpvReserved: INTEGER): INTEGER;
  111. BEGIN
  112.         action := hinstDLL;
  113.         cmdline := fdwReason
  114.         RETURN action
  115. END dllentry;
  116.  
  117.  
  118. PROCEDURE sofinit*;
  119. END sofinit;
  120.  
  121.  
  122. END API.