| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 |
- (*
- BSD 2-Clause License
- Copyright (c) 2023, Anton Krotov
- All rights reserved.
- *)
- MODULE API;
- IMPORT SYSTEM;
- CONST
- eol* = 0DX + 0AX;
- BIT_DEPTH* = 32;
- VAR
- action*, cmdline*, org*: INTEGER;
- PROCEDURE [stdcall-] sysfunc3* (arg1, arg2, arg3: INTEGER): INTEGER;
- BEGIN
- SYSTEM.CODE(
- 053H, (* push ebx *)
- 08BH, 045H, 008H, (* mov eax, dword [ebp + 8] *)
- 08BH, 05DH, 00CH, (* mov ebx, dword [ebp + 12] *)
- 08BH, 04DH, 010H, (* mov ecx, dword [ebp + 16] *)
- 0CDH, 040H, (* int 64 *)
- 05BH, (* pop ebx *)
- 0C9H, (* leave *)
- 0C2H, 00CH, 000H (* ret 12 *)
- )
- RETURN 0
- END sysfunc3;
- PROCEDURE OutChar* (c: CHAR);
- BEGIN
- sysfunc3(63, 1, ORD(c))
- END OutChar;
- PROCEDURE OutLn*;
- BEGIN
- OutChar(0DX);
- OutChar(0AX)
- END OutLn;
- PROCEDURE OutStr (pchar: INTEGER);
- VAR
- c: CHAR;
- BEGIN
- IF pchar # 0 THEN
- REPEAT
- SYSTEM.GET(pchar, c);
- IF c # 0X THEN
- OutChar(c)
- END;
- INC(pchar)
- UNTIL c = 0X
- END
- END OutStr;
- PROCEDURE DebugMsg* (lpText, lpCaption: INTEGER);
- BEGIN
- IF lpCaption # 0 THEN
- OutLn;
- OutStr(lpCaption);
- OutChar(":");
- OutLn
- END;
- OutStr(lpText);
- IF lpCaption # 0 THEN
- OutLn
- END
- END DebugMsg;
- PROCEDURE _NEW* (size: INTEGER): INTEGER;
- RETURN sysfunc3(68, 12, size)
- END _NEW;
- PROCEDURE _DISPOSE* (ptr: INTEGER): INTEGER;
- BEGIN
- sysfunc3(68, 13, ptr)
- RETURN 0
- END _DISPOSE;
- PROCEDURE init* (reserved, _org: INTEGER);
- BEGIN
- org := _org - 4096;
- sysfunc3(68, 11, 0)
- END init;
- PROCEDURE exit* (code: INTEGER);
- BEGIN
- sysfunc3(-1, 0, 0)
- END exit;
- PROCEDURE exit_thread* (code: INTEGER);
- BEGIN
- sysfunc3(-1, 0, 0)
- END exit_thread;
- PROCEDURE dllentry* (hinstDLL, fdwReason, lpvReserved: INTEGER): INTEGER;
- BEGIN
- action := hinstDLL;
- cmdline := fdwReason
- RETURN hinstDLL
- END dllentry;
- PROCEDURE sofinit*;
- END sofinit;
- END API.
|