SDK/Lib/KolibriOS.pas

3723 lines
89 KiB
ObjectPascal

(************************************************************
KolibriOS system functions and definitions
*************************************************************)
unit KolibriOS;
interface
type
TSize = packed record
Height: Word;
Width: Word;
end;
TPoint = packed record
Y: SmallInt;
X: SmallInt;
end;
TRect = packed record
Left: LongInt;
Top: LongInt;
Right: LongInt;
Bottom: LongInt;
end;
TBox = packed record
Left: LongInt;
Top: LongInt;
Width: LongWord;
Height: LongWord;
end;
TSystemDate = packed record
Year: Byte;
Month: Byte;
Day: Byte;
Zero: Byte;
end;
TSystemTime = packed record
Hours: Byte;
Minutes: Byte;
Seconds: Byte;
Zero: Byte;
end;
TThreadInfo = packed record
CpuUsage: LongWord;
WinStackPos: Word;
Reserved0: Word;
Reserved1: Word;
Name: array[0..11] of KolibriChar;
MemAddress: LongWord;
MemUsage: LongWord;
Identifier: LongWord;
Window: TBox;
ThreadState: Word;
Reserved2: Word;
Client: TBox;
WindowState: Byte;
EventMask: LongWord;
KeyboardMode: Byte;
Reserved3: array[0..947] of Byte;
end;
TKeyboardInputMode = (kmChar, kmScan);
TKeyboardInputFlag = (kfCode, kfEmpty, kfHotKey);
TKeyboardInput = packed record
Flag: TKeyboardInputFlag;
Code: KolibriChar;
case TKeyboardInputMode of
kmChar:
(ScanCode: KolibriChar);
kmScan:
(case TKeyboardInputFlag of
kfCode:
();
kfHotKey:
(Control: Word);
);
end;
TButtonInput = packed record
MouseButton: Byte;
ID: Word;
HiID: Byte;
end;
TKernelVersion = packed record
A, B, C, D: Byte;
Reserved: Byte;
Revision: LongWord;
end;
TRAMInfo = packed record
AvailablePages: LongWord;
FreePages: LongWord;
PageFaults: LongWord;
KernelHeapSize: LongWord;
KernelHeapFree: LongWord;
Blocks: LongWord;
FreeBlocks: LongWord;
MaxFreeBlock: LongWord;
MaxAllocatedBlock: LongWord;
end;
TKeyboardLayout = array[0..127] of KolibriChar;
TDriverControl = packed record
Handle: THandle;
Func: LongWord;
InputData: Pointer;
InputDataSize: LongWord;
OutputData: Pointer;
OutputDataSize: LongWord;
end;
TFileDate = packed record
Day: Byte;
Month: Byte;
Year: Word;
end;
TFileTime = packed record
Seconds: Byte;
Minutes: Byte;
Hours: Byte;
Zero: Byte;
end;
TFileDateTime = packed record
Time: TFileTime;
Date: TFileDate;
end;
TFileAttributes = packed record
Attributes: LongWord;
Flags: LongWord;
Creation: TFileDateTime;
Access: TFileDateTime;
Modify: TFileDateTime;
Size: UInt64;
end;
TFileInformation = packed record
Attributes: TFileAttributes;
Name: array[0..255] of KolibriChar;
Reserved: array[0..7] of Byte;
end;
TFileInformationW = packed record
Attributes: TFileAttributes;
Name: array[0..255] of WideChar;
Reserved: array[0..7] of Byte;
end;
TFolderInformation = packed record
Version: LongWord;
BlockCount: LongWord;
FileCount: LongWord;
Reserved: array[0..19] of Byte;
FileInformation: array[0..0] of TFileInformation;
end;
TFolderInformationW = packed record
Version: LongWord;
BlockCount: LongWord;
FileCount: LongWord;
Reserved: array[0..19] of Byte;
FileInformation: array[0..0] of TFileInformationW;
end;
TStandardColors = packed record
Frames: LongWord;
Grab: LongWord;
Work3DDark: LongWord;
Work3DLight: LongWord;
GrabText: LongWord;
Work: LongWord;
WorkButton: LongWord;
WorkButtonText: LongWord;
WorkText: LongWord;
WorkGraph: LongWord;
end;
TSockAddr = packed record
Family: Word;
Data: array[0..13] of Byte;
end;
TOptStruct = packed record
Level: LongWord;
OptName: LongWord;
OptLength: LongWord;
Options: array[0..0] of Byte
end;
TThreadContext = packed record
EIP: LongWord;
EFlags: LongWord;
EAX: LongWord;
ECX: LongWord;
EDX: LongWord;
EBX: LongWord;
ESP: LongWord;
EBP: LongWord;
ESI: LongWord;
EDI: LongWord;
end;
TSignalBuffer = packed record
ID: LongWord;
Data: array[0..19] of Byte;
end;
TIPCMessage = packed record
ID: LongWord;
Length: LongWord;
Data: array[0..0] of Byte;
end;
TIPCBuffer = packed record
Lock: LongWord;
CurrentSize: LongWord;
Data: array[0..0] of TIPCMessage;
end;
TDebugMessage = packed record
Code: LongWord;
ID: LongWord;
Data: LongWord;
end;
TDebugBuffer = packed record
TotalSize: LongWord;
CurrentSize: LongWord;
Buffer: array[0..0] of TDebugMessage;
end;
const
INVALID_HANDLE = 0;
// File system error codes
ERROR_SUCCESS = 0;
ERROR_FUNCTION_IS_NOT_SUPPORTED = 2;
ERROR_UNKNOWN_FILE_SYSTEM = 3;
ERROR_FILE_NOT_FOUND = 5;
ERROR_END_OF_FILE = 6;
ERROR_INVALID_POINTER = 7;
ERROR_DISK_FULL = 8;
ERROR_FILE_SYSTEM_ERROR = 9;
ERROR_ACCESS_DENIED = 10;
ERROR_DEVICE_ERROR = 11;
ERROR_NO_MEMORY_FOR_FILE_SYSTEM = 12;
// Application start functions error codes
ERROR_NOT_ENOUGH_MEMORY = 30;
ERROR_FILE_IS_NOT_EXECUTABLE = 31;
ERROR_TOO_MANY_PROCESSES = 32;
WINDOW_BORDER_SIZE = 5; // defined by kernel
// Window styles
WS_FIXED = $00000000;
WS_NO_DRAW = $01000000;
WS_SIZABLE = $02000000;
WS_SKINNED_SIZABLE = $03000000;
WS_SKINNED_FIXED = $04000000;
WS_CAPTION = $10000000;
WS_CLIENT_COORDS = $20000000;
WS_TRANSPARENT_FILL = $40000000;
WS_GRADIENT_FILL = $80000000;
// Caption styles
CAPTION_MOVABLE = $00000000;
CAPTION_NONMOVABLE = $01000000;
// Events
REDRAW_EVENT = 1;
KEY_EVENT = 2;
BUTTON_EVENT = 3;
BACKGROUND_EVENT = 5;
MOUSE_EVENT = 6;
IPC_EVENT = 7;
NETWORK_EVENT = 8;
DEBUG_EVENT = 9;
// Event Mask constants
EM_REDRAW = $001;
EM_KEY = $002;
EM_BUTTON = $004;
EM_BACKGROUND = $010;
EM_MOUSE = $020;
EM_IPC = $040;
EM_NETWORK = $080;
EM_DEBUG = $100;
// Size multipliers for DrawText
DT_x1 = $0000000;
DT_x2 = $1000000;
DT_x3 = $2000000;
DT_x4 = $3000000;
DT_x5 = $4000000;
DT_x6 = $5000000;
DT_x7 = $6000000;
DT_x8 = $7000000;
// Charset specifiers for DrawText
DT_CP866_6x9 = $00000000;
DT_CP866_8x16 = $10000000;
DT_UTF16LE_8x16 = $20000000;
DT_UTF8_8x16 = $30000000;
// Fill styles for DrawText
DT_TRANSPARENT_FILL = $00000000;
DT_FILL_OPAQUE = $40000000;
// Draw zero terminated string for DrawText
DT_ZSTRING = $80000000;
// Button styles
BS_TRANSPARENT_FILL = $40000000;
BS_NO_FRAME = $20000000;
// Blit flags
BLIT_CLIENT_RELATIVE = $20000000;
// OpenSharedMemory open/access flags
SHM_OPEN = $00;
SHM_OPEN_ALWAYS = $04;
SHM_CREATE = $08;
SHM_READ = $00;
SHM_WRITE = $01;
// KeyboardLayout flags
KBL_NORMAL = 1;
KBL_SHIFT = 2;
KBL_ALT = 3;
// SystemShutdown parameters
SHUTDOWN_TURNOFF = 2;
SHUTDOWN_REBOOT = 3;
SHUTDOWN_RESTART = 4;
{-1} procedure ExitThread; stdcall;
{0} procedure DrawWindow(Left, Top, Width, Height: LongInt; Caption: PKolibriChar; BackColor, Style, CapStyle: LongWord); stdcall;
{1} procedure SetPixel(X, Y: LongInt; Color: LongWord); stdcall;
{2} function GetKey: TKeyboardInput; stdcall;
{3} function GetSystemTime: TSystemTime; stdcall;
{4} procedure DrawText(X, Y: LongInt; Text: PKolibriChar; ForeColor, BackColor, Flags, Count: LongWord); stdcall;
{5} procedure Sleep(Time: LongWord); stdcall;
{6} {UNDEFINED}
{7} procedure DrawImage(const Image; X, Y: LongInt; Width, Height: LongWord); stdcall;
{8} procedure DrawButton(Left, Top, Width, Height: LongInt; BackColor, Style, ID: LongWord); stdcall;
{8} procedure DeleteButton(ID: LongWord); stdcall;
{9} function GetThreadInfo(Slot: LongWord; var Buffer: TThreadInfo): LongWord; stdcall;
{10} function WaitEvent: LongWord; stdcall;
{11} function CheckEvent: LongWord; stdcall;
{12.1} procedure BeginDraw; stdcall;
{12.2} procedure EndDraw; stdcall;
{13} procedure DrawRectangle(X, Y: LongInt; Width, Height: LongWord; Color: LongWord); stdcall;
{14} function GetScreenMax: TPoint; stdcall;
{15.1} procedure SetBackgroundSize(Width, Height: LongWord); stdcall;
{15.2} procedure SetBackgroundPixel(X, Y: LongInt; Color: LongWord); stdcall;
{15.3} procedure DrawBackground; stdcall;
{15.4} procedure SetBackgroundDrawMode(DrawMode: LongWord); stdcall;
{15.5} procedure DrawBackgroundImage(const Image; X, Y: LongInt; Width, Height: LongWord); stdcall;
{15.6} function MapBackground: Pointer; stdcall;
{15.7} function UnmapBackground(Background: Pointer): LongInt; stdcall;
{15.8} function GetLastDrawnBackgroundRect: TRect; stdcall;
{15.9} procedure UpdateBackgroundRect(Left, Top, Right, Bottom: LongInt); stdcall;
{16} function FlushFloppyCache(FloppyNumber: LongWord): LongWord; stdcall;
{17} function GetButton: TButtonInput; stdcall;
{18.1} procedure DeactivateWindow(Slot: LongWord); stdcall;
{18.2} procedure TerminateThreadBySlot(Slot: LongWord); stdcall;
{18.3} procedure ActivateWindow(Slot: LongWord); stdcall;
{18.4} function GetIdleTime: LongWord; stdcall;
{18.5} function GetCPUClock: LongWord; stdcall;
{18.6} function SaveRamDisk(FileName: PKolibriChar): LongWord; stdcall;
{18.7} function GetActiveWindow: LongWord; stdcall;
{18.8.1} function GetSpeakerState: LongInt; stdcall;
{18.8.2} procedure SwitchSpeakerState; stdcall;
{18.9} function SystemShutdown(Param: LongWord): LongInt; stdcall;
{18.10} procedure MinimizeActiveWindow; stdcall;
{18.11} procedure GetDiskSystemInfo(var Buffer); stdcall;
{18.12} {UNDEFINED}
{18.13} procedure GetKernelVersion(var Buffer: TKernelVersion); stdcall;
{18.14} function WaitRetrace: LongInt; stdcall;
{18.15} function CenterMousePointer: LongInt; stdcall;
{18.16} function GetFreeMemory: LongWord; stdcall;
{18.17} function GetAvailableMemory: LongWord; stdcall;
{18.18} function TerminateThreadById(ID: LongWord): LongInt; stdcall;
{18.19.0} function GetMouseSpeed: LongWord; stdcall;
{18.19.1} procedure SetMouseSpeed(Speed: LongWord); stdcall;
{18.19.2} function GetMouseSensitivity: LongWord; stdcall;
{18.19.3} procedure SetMouseSensitivity(Sensitivity: LongWord); stdcall;
{18.19.4} procedure SetMousePos(X, Y: LongInt); stdcall;
{18.19.5} procedure SetMouseButtons(State: LongWord); stdcall;
{18.19.6} function GetDoubleClickTime: LongWord; stdcall;
{18.19.7} procedure SetDoubleClickTime(Time: LongWord); stdcall;
{18.20} function GetRAMInfo(var Buffer: TRAMInfo): LongInt; stdcall;
{18.21} function GetSlotById(ID: LongWord): LongWord; stdcall;
{18.22.0} function MinimizeWindowBySlot(Slot: LongWord): LongInt; stdcall;
{18.22.1} function MinimizeWindowByID(ID: LongWord): LongInt; stdcall;
{18.22.2} function RestoreWindowBySlot(Slot: LongWord): LongInt; stdcall;
{18.22.3} function RestoreWindowByID(ID: LongWord): LongInt; stdcall;
{18.23} function MinimizeAllWindows: LongWord; stdcall;
{18.24} procedure SetScreenLimits(Width, Height: LongWord); stdcall;
{18.25.1} function GetWindowZOrder(ID: LongWord): LongWord; stdcall;
{18.25.2} function SetWindowZOrder(ID, ZOrder: LongWord): LongInt; stdcall;
{19} {UNDEFINED}
{20.1} function ResetMidi: LongInt; stdcall;
{20.2} function OutputMidi(Data: Byte): LongInt; stdcall;
{21.1} function SetMidiBase(Port: LongWord): LongInt; stdcall;
{21.2} function SetKeyboardLayout(Flags: LongWord; var Table: TKeyboardLayout): LongInt; stdcall;
{21.2} function SetKeyboardLayoutCountry(Country: LongWord): LongInt; stdcall;
{21.3} {UNDEFINED}
{21.4} {UNDEFINED}
{21.5} function SetSystemLanguage(SystemLanguage: LongWord): LongInt; stdcall;
{21.6} {UNDEFINED}
{21.7} {UNDEFINED}
{21.8} {UNDEFINED}
{21.9} {UNDEFINED}
{21.10} {UNDEFINED}
{21.11} function SetHDAccess(Value: LongWord): LongInt; stdcall;
{21.12} function SetPCIAccess(Value: LongWord): LongInt; stdcall;
{22.0} function SetSystemTime(Time: TSystemTime): LongInt; stdcall;
{22.1} function SetSystemDate(Date: TSystemDate): LongInt; stdcall;
{22.2} function SetDayOfWeek(DayOfWeek: LongWord): LongInt; stdcall;
{22.3} function SetAlarm(Time: TSystemTime): LongInt; stdcall;
{23} function WaitEventByTime(Time: LongWord): LongWord; stdcall;
{24.4} procedure OpenCDTray(Drive: LongWord); stdcall;
{24.5} procedure CloseCDTray(Drive: LongWord); stdcall;
{25} procedure DrawBackgroundLayerImage(const Image; X, Y: LongInt; Width, Height: LongWord); stdcall;
{26.1} function GetMidiBase: LongWord; stdcall;
{26.2} procedure GetKeyboardLayout(Flags: LongWord; var Table: TKeyboardLayout); stdcall;
{26.2} function GetKeyboardLayoutCountry: LongWord; stdcall;
{26.3} {UNDEFINED}
{26.4} {UNDEFINED}
{26.5} function GetSystemLanguage: LongWord; stdcall;
{26.6} {UNDEFINED}
{26.7} {UNDEFINED}
{26.8} {UNDEFINED}
{26.9} function GetTickCount: LongWord; stdcall;
{26.10} function GetTickCount64: UInt64; stdcall;
{26.11} function IsHDAccessAllowed: LongWord; stdcall;
{26.12} function IsPCIAccessAllowed: LongWord; stdcall;
{27} {UNDEFINED}
{28} {UNDEFINED}
{29} function GetSystemDate: TSystemDate; stdcall;
{30.1} procedure SetCurrentDirectory(Path: PKolibriChar); stdcall;
{30.2} function GetCurrentDirectory(Buffer: PKolibriChar; Count: LongWord): LongWord; stdcall;
{31} {UNDEFINED}
{32} {UNDEFINED}
{33} {UNDEFINED}
{34} function GetPointOwner(X, Y: LongInt): LongWord; stdcall;
{35} function GetPixel(X, Y: LongInt): LongWord; stdcall;
{36} procedure GetScreenImage(var Buffer; X, Y: LongInt; Width, Height: LongWord); stdcall;
{37.0} function GetMousePos: TPoint; stdcall;
{37.1} function GetWindowMousePos: TPoint; stdcall;
{37.2} function GetMouseButtons: LongWord; stdcall;
{37.3} function GetMouseEvents: LongWord; stdcall;
{37.4} function LoadCursorFromFile(FileName: PKolibriChar): THandle; stdcall;
{37.4} function LoadCursorFromMemory(const Buffer): THandle; stdcall;
{37.4} function LoadCursorIndirect(const Buffer; HotSpotX, HotSpotY: ShortInt): THandle; stdcall;
{37.5} function SetCursor(Handle: LongWord = 0): THandle; stdcall;
{37.6} procedure DeleteCursor(Handle: THandle); stdcall;
{37.7} function GetMouseScroll: TPoint; stdcall;
{38} procedure DrawLine(X1, Y1, X2, Y2: LongInt; Color: LongWord); stdcall;
{39.1} function GetBackgroundSize: TSize; stdcall;
{39.2} function GetBackgroundPixel(X, Y: LongInt): LongWord; stdcall;
{39.3} {UNDEFINED}
{39.4} function GetBackgroundDrawMode: LongWord; stdcall;
{40} function SetEventMask(Mask: LongWord): LongWord; stdcall;
{41} {UNDEFINED}
{42} {UNDEFINED}
{43} function InPort(Port: LongWord; var Data: Byte): LongWord; stdcall;
{43} function OutPort(Port: LongWord; Data: Byte): LongWord; stdcall;
{44} {UNDEFINED}
{45} {UNDEFINED}
{46} function ReservePorts(First, Last: LongWord): LongWord; stdcall;
{46} function FreePorts(First, Last: LongWord): LongWord; stdcall;
{47} {DrawNumber}
{48.0} procedure ApplyStyleSettings; stdcall;
{48.1} procedure SetButtonStyle(ButtonStyle: LongWord); stdcall;
{48.2} procedure SetStandardColors(var ColorTable: TStandardColors; Size: LongWord); stdcall;
{48.3} procedure GetStandardColors(var ColorTable: TStandardColors; Size: LongWord); stdcall;
{48.4} function GetSkinHeight: LongWord; stdcall;
{48.5} function GetScreenWorkingArea: TRect; stdcall;
{48.6} procedure SetScreenWorkingArea(Left, Top, Right, Bottom: LongInt); stdcall;
{48.7} function GetSkinMargins: TRect; stdcall;
{48.8} function SetSkin(FileName: PKolibriChar): LongInt; stdcall;
{48.9} function GetFontSmoothing: LongInt; stdcall;
{48.10} procedure SetFontSmoothing(Smoothing: LongInt); stdcall;
{48.11} function GetFontHeight: LongWord; stdcall;
{48.12} procedure SetFontHeight(Height: LongWord); stdcall;
{49} {Advanced Power Management (APM)}
{50.0} procedure SetWindowShape(const Data); stdcall;
{50.1} procedure SetWindowScale(Scale: LongWord); stdcall;
{51.1} function CreateThread(Entry, Stack: Pointer): LongWord; stdcall;
{52} {UNDEFINED}
{53} {UNDEFINED}
{54.0} function GetClipboardSlotCount: LongInt; stdcall;
{54.1} function GetClipboardData(Slot: LongWord): Pointer; stdcall;
{54.2} function SetClipboardData(const Src; Count: LongWord): LongInt; stdcall;
{54.3} function DeleteClipboardLastSlot: LongInt; stdcall;
{54.4} function ResetClipboard: LongInt; stdcall;
{55} function SpeakerPlay(const Data): LongWord; stdcall;
{56} {UNDEFINED}
{57} {PCI BIOS}
{58} {UNDEFINED}
{59} {UNDEFINED}
{60.1} function IPCSetBuffer(const Buffer: TIPCBuffer; Size: LongWord): LongInt; stdcall;
{60.2} function IPCSendMessage(ID: LongWord; var Msg: TIPCMessage; Size: LongWord): LongInt; stdcall;
{61.1} function GetScreenSize: TSize; stdcall;
{61.2} function GetScreenBitsPerPixel: LongWord; stdcall;
{61.3} function GetScreenBytesPerScanLine: LongWord; stdcall;
{62.0} function GetPCIVersion: LongWord; stdcall;
{62.1} function GetLastPCIBus: LongWord; stdcall;
{62.2} function GetPCIAddressingMode: LongWord; stdcall;
{62.3} {UNDEFINED}
{62.4} function ReadPCIByte(Bus, Device, Func, Reg: Byte): Byte; stdcall;
{62.5} function ReadPCIWord(Bus, Device, Func, Reg: Byte): Word; stdcall;
{62.6} function ReadPCILongWord(Bus, Device, Func, Reg: Byte): LongWord; stdcall;
{62.7} {UNDEFINED}
{62.8} function WritePCIByte(Bus, Device, Func, Reg: Byte; Data: Byte): LongWord; stdcall;
{62.9} function WritePCIWord(Bus, Device, Func, Reg: Byte; Data: Word): LongWord; stdcall;
{62.10} function WritePCILongWord(Bus, Device, Func, Reg: Byte; Data: LongWord): LongWord; stdcall;
{63.1} procedure DebugWrite(Data: Byte); stdcall;
{63.2} function DebugRead(var Data: Byte): LongWord; stdcall;
{64} function ReallocAppMemory(Count: LongWord): LongInt; stdcall;
{65} procedure DrawImageEx(const Image; Left, Top: LongInt; Width, Height, BPP: LongWord; Palette: Pointer; Padding: LongWord); stdcall;
{66.1} procedure SetKeyboardInputMode(Mode: LongWord); stdcall;
{66.2} function GetKeyboardInputMode: LongWord; stdcall;
{66.3} function GetControlKeyState: LongWord; stdcall;
{66.4} function SetHotKey(ScanCode, Control: LongWord): LongInt; stdcall;
{66.5} function ResetHotKey(ScanCode, Control: LongWord): LongInt; stdcall;
{66.6} procedure LockKeyboard; stdcall;
{66.7} procedure UnlockKeyboard; stdcall;
{67} procedure SetWindowPos(Left, Top, Width, Height: LongInt); stdcall;
{68.0} function GetTaskSwitchCount: LongWord; stdcall;
{68.1} procedure SwitchThread; stdcall;
{68.2.0} function EnableRDPMC: LongWord; stdcall;
{68.2.1} function IsCacheEnabled: LongWord; stdcall;
{68.2.2} procedure EnableCache; stdcall;
{68.2.3} procedure DisableCache; stdcall;
{68.3} {ReadMSR}
{68.4} {WriteMSR}
{68.5} {UNDEFINED}
{68.6} {UNDEFINED}
{68.7} {UNDEFINED}
{68.8} {UNDEFINED}
{68.9} {UNDEFINED}
{68.10} {UNDEFINED}
{68.11} function HeapInit: LongWord; stdcall;
{68.12} function HeapAllocate(Bytes: LongWord): Pointer; stdcall;
{68.13} function HeapFree(MemPtr: Pointer): LongWord; stdcall;
{68.14} procedure WaitSignal(var Buffer: TSignalBuffer); stdcall;
{68.15} {UNDEFINED}
{68.16} function LoadDriver(Name: PKolibriChar): THandle; stdcall;
{68.17} function ControlDriver(var CtrlStructure: TDriverControl): LongWord; stdcall;
{68.18} {UNDEFINED}
{68.19} function LoadLibrary(FileName: PKolibriChar): Pointer; stdcall;
{68.20} function HeapReallocate(MemPtr: Pointer; Bytes: LongWord): Pointer; stdcall;
{68.21} function LoadPEDriver(Name, CmdLine: PKolibriChar): THandle; stdcall;
{68.22} function OpenSharedMemory(Name: PKolibriChar; Bytes: LongWord; Flags: LongWord): Pointer; stdcall;
{68.23} function CloseSharedMemory(Name: PKolibriChar): LongWord; stdcall;
{68.24} function SetExceptionHandler(Handler: Pointer; Mask: LongWord; var OldMask: LongWord): Pointer; stdcall;
{68.25} function SetExceptionActivity(Signal, Activity: LongWord): LongInt; stdcall;
{68.26} procedure ReleaseMemoryPages(MemPtr: Pointer; Offset, Size: LongWord); stdcall;
{68.27} function LoadFile(FileName: PKolibriChar; var Size: LongWord): Pointer; stdcall;
{69.0} procedure SetDebugBuffer(const Buffer: TDebugBuffer); stdcall;
{69.1} procedure GetThreadContext(ID: LongWord; var Context: TThreadContext); stdcall;
{69.2} procedure SetThreadContext(ID: LongWord; const Context: TThreadContext); stdcall;
{69.3} procedure DetachThread(ID: LongWord); stdcall;
{69.4} procedure SuspendThread(ID: LongWord); stdcall;
{69.5} procedure ResumeThread(ID: LongWord); stdcall;
{69.6} function ReadProcessMemory(ID, Count: LongWord; const Src; var Dst): LongInt; stdcall;
{69.7} function WriteProcessMemory(ID, Count: LongWord; const Src; var Dst): LongInt; stdcall;
{69.8} procedure DebugTerminate(ID: LongWord); stdcall;
{69.9} function SetBreakPoint(ID: LongWord; Index, Flags: Byte; Address: Pointer): LongInt; stdcall;
{69.9} function ResetBreakPoint(ID: LongWord; Index, Flags: Byte; Address: Pointer): LongInt; stdcall;
{70.0} function ReadFile(FileName: PKolibriChar; var Buffer; Count: LongWord; Pos: UInt64; var BytesRead: LongWord): LongInt; stdcall;
{70.1} function ReadFolder(Path: PKolibriChar; var Buffer; Count, Start, Flags: LongWord; var BlocksRead: LongWord): LongInt; stdcall;
{70.2} function CreateFile(FileName: PKolibriChar): LongInt; stdcall;
{70.3} function WriteFile(FileName: PKolibriChar; const Buffer; Count: LongWord; Pos: UInt64; var BytesWritten: LongWord): LongInt; stdcall;
{70.4} function ResizeFile(FileName: PKolibriChar; Size: UInt64): LongInt; stdcall;
{70.5} function GetFileAttributes(FileName: PKolibriChar; var Buffer: TFileAttributes): LongWord; stdcall;
{70.6} function SetFileAttributes(FileName: PKolibriChar; var Buffer: TFileAttributes): LongWord; stdcall;
{70.7} function RunFile(FileName, CmdLine: PKolibriChar): LongInt; stdcall;
{70.7} function DebugFile(FileName, CommandLine: PKolibriChar): LongInt; stdcall;
{70.8} function DeleteFile(FileName: PKolibriChar): LongInt; stdcall;
{70.9} function CreateFolder(Path: PKolibriChar): LongInt; stdcall;
{71.1} procedure SetWindowCaption(Caption: PKolibriChar); stdcall;
{72.1.2} function SendActiveWindowKey(KeyCode: LongWord): LongInt; stdcall;
{72.1.3} function SendActiveWindowButton(ButtonID: LongWord): LongInt; stdcall;
{73} procedure Blit(const Src; SrcX, SrcY: LongInt; SrcW, SrcH: LongWord; DstX, DstY: LongInt; DstW, DstH, Stride, Flags: LongWord); stdcall;
{74.-1} function GetActiveNetworkDevices: LongWord; stdcall;
{74.0} function GetNetworkDeviceType(Device: Byte): LongInt; stdcall;
{74.1} function GetNetworkDeviceName(Device: Byte; var Buffer): LongInt; stdcall;
{74.2} function ResetNetworkDevice(Device: Byte): LongInt; stdcall;
{74.3} function StopNetworkDevice(Device: Byte): LongInt; stdcall;
{74.4} function GetNetworkDevicePointer(Device: Byte): Pointer; stdcall;
{74.5} {UNDEFINED}
{74.6} function GetSentPackets(Device: Byte): LongInt; stdcall;
{74.7} function GetReceivedPackets(Device: Byte): LongInt; stdcall;
{74.8} function GetSentBytes(Device: Byte): UInt64; stdcall;
{74.9} function GetReceivedBytes(Device: Byte): UInt64; stdcall;
{74.10} function GetLinkStatus(Device: Byte): LongInt; stdcall;
{75.0} function SocketOpen(Domain, Kind, Protocol: LongWord): LongWord; stdcall; //////////////////////////
{75.1} function SocketClose(Socket: LongWord): LongInt; stdcall; //
{75.2} function SocketBind(Socket: LongWord; var SockAddr: TSockAddr): LongInt; stdcall; //
{75.3} function SocketListen(Socket: LongWord; var BackLog): LongInt; stdcall; // BSD Sockets
{75.4} function SocketConnect(Socket: LongWord; var SockAddr: TSockAddr): LongInt; stdcall; // API
{75.5} function SocketAccept(Socket: LongWord; var SockAddr: TSockAddr): LongWord; stdcall; //
{75.6} function SocketSend(Socket: LongWord; const Buffer; Size, Flags: LongWord): LongInt; stdcall; //
{75.7} function SocketReceive(Socket: LongWord; var Buffer; Size, Flags: LongWord): LongInt; stdcall; /////
{75.8} function SetSocketOptions(Socket: LongWord; var OptStruct: TOptStruct): LongInt; stdcall;
{75.9} function GetSocketOptions(Socket: LongWord; var OptStruct: TOptStruct): LongInt; stdcall;
{75.10} function GetSocketPair(var Socket1, Socket2: LongWord): LongInt; stdcall;
{76.0.0} function GetMAC(Device: Byte): UInt64; stdcall;
{76.1.0} function GetIPv4SentPackets(Device: Byte): LongWord; stdcall;
{76.1.1} function GetIPv4ReceivedPackets(Device: Byte): LongWord; stdcall;
{76.1.2} function GetIPv4IP(Device: Byte): LongWord; stdcall;
{76.1.3} function SetIPv4IP(Device: Byte; IP: LongWord): LongWord; stdcall;
{76.1.4} function GetIPv4DNS(Device: Byte): LongWord; stdcall;
{76.1.5} function SetIPv4DNS(Device: Byte; DNS: LongWord): LongWord; stdcall;
{76.1.6} function GetIPv4Subnet(Device: Byte): LongWord; stdcall;
{76.1.7} function SetIPv4Subnet(Device: Byte; Subnet: LongWord): LongWord; stdcall;
{76.1.8} function GetIPv4Gateway(Device: Byte): LongWord; stdcall;
{76.1.9} function SetIPv4Gateway(Device: Byte; Gateway: LongWord): LongWord; stdcall;
{76.2.0} function GetICMPSentPackets(Device: Byte): LongWord; stdcall;
{76.2.1} function GetICMPReceivedPackets(Device: Byte): LongWord; stdcall;
{76.3.0} function GetUDPSentPackets(Device: Byte): LongWord; stdcall;
{76.3.1} function GetUDPReceivedPackets(Device: Byte): LongWord; stdcall;
{76.4.0} function GetTCPSentPackets(Device: Byte): LongWord; stdcall;
{76.4.1} function GetTCPReceivedPackets(Device: Byte): LongWord; stdcall;
{76.5.0} function GetARPSentPackets(Device: Byte): LongWord; stdcall;
{76.5.1} function GetARPReceivedPackets(Device: Byte): LongWord; stdcall;
{76.5.2} function GetARPEntrys(Device: Byte): LongWord; stdcall;
{76.5.3} function GetARPEntry(Device: Byte; Entry: LongWord; var Buffer): LongWord; stdcall;
{76.5.4} function AddARPEntry(Device: Byte; const Buffer): LongWord; stdcall;
{76.5.5} function RemoveARPEntry(Device: Byte; Entry: LongWord): LongWord; stdcall;
{76.5.6} function SendARPAnnounce(Device: Byte): LongWord; stdcall;
{76.5.7} function GetARPConflicts(Device: Byte): LongWord; stdcall;
{77.0} function CreateFutex(Futex: Pointer): THandle; stdcall;
{77.1} function DestroyFutex(Handle: THandle): LongInt; stdcall;
{77.2} function WaitFutex(Handle: THandle; Value, Time: LongWord): LongInt; stdcall;
{77.3} function WakeFutex(Handle: THandle; Waiters: LongWord): LongWord; stdcall;
function GetProcAddress(hLib: Pointer; ProcName: PKolibriChar): Pointer; stdcall;
implementation
procedure ExitThread; stdcall;
asm
or eax, -1
int $40
end;
procedure DrawWindow(Left, Top, Width, Height: LongInt; Caption: PKolibriChar; BackColor, Style, CapStyle: LongWord); stdcall;
asm
push ebx
push edi
push esi
xor eax, eax
mov ebx, Left
mov ecx, Top
shl ebx, 16
shl ecx, 16
or ebx, Width
or ecx, Height
mov edx, Style
or edx, BackColor
mov edi, Caption
mov esi, CapStyle
int $40
pop esi
pop edi
pop ebx
end;
procedure SetPixel(X, Y: LongInt; Color: LongWord); stdcall;
asm
push ebx
mov eax, 1
mov ebx, X
mov ecx, Y
mov edx, Color
int $40
pop ebx
end;
function GetKey: TKeyboardInput; stdcall;
asm
mov eax, 2
int $40
end;
function GetSystemTime: TSystemTime; stdcall;
asm
mov eax, 3
int $40
end;
procedure DrawText(X, Y: LongInt; Text: PKolibriChar; ForeColor, BackColor, Flags, Count: LongWord); stdcall;
asm
push ebx
push edi
push esi
mov eax, 4
mov ebx, X
shl ebx, 16
or ebx, Y
mov ecx, Flags
or ecx, ForeColor
mov edx, Text
mov edi, BackColor
mov esi, Count
int $40
pop esi
pop edi
pop ebx
end;
procedure Sleep(Time: LongWord); stdcall;
asm
push ebx
mov eax, 5
mov ebx, Time
int $40
pop ebx
end;
procedure DrawImage(const Image; X, Y: LongInt; Width, Height: LongWord); stdcall;
asm
push ebx
mov eax, 7
mov ebx, Image
mov ecx, Width
mov edx, X
shl ecx, 16
shl edx, 16
or ecx, Height
or edx, Y
int $40
pop ebx
end;
procedure DrawButton(Left, Top, Width, Height: LongInt; BackColor, Style, ID: LongWord); stdcall;
asm
push ebx
push esi
mov eax, 8
mov ebx, Left
mov ecx, Top
shl ebx, 16
shl ecx, 16
or ebx, Width
or ecx, Height
mov edx, ID
or edx, Style
mov esi, BackColor
int $40
pop esi
pop ebx
end;
procedure DeleteButton(ID: LongWord); stdcall;
asm
mov eax, 8
mov edx, ID
or edx, $80000000
int $40
end;
function GetThreadInfo(Slot: LongWord; var Buffer: TThreadInfo): LongWord; stdcall;
asm
push ebx
mov eax, 9
mov ebx, Buffer
mov ecx, Slot
int $40
pop ebx
end;
function WaitEvent: LongWord; stdcall;
asm
mov eax, 10
int $40
end;
function CheckEvent: LongWord; stdcall;
asm
mov eax, 11
int $40
end;
procedure BeginDraw; stdcall;
asm
push ebx
mov eax, 12
mov ebx, 1
int $40
pop ebx
end;
procedure EndDraw; stdcall;
asm
push ebx
mov eax, 12
mov ebx, 2
int $40
pop ebx
end;
procedure DrawRectangle(X, Y: LongInt; Width, Height: LongWord; Color: LongWord); stdcall;
asm
push ebx
mov eax, 13
mov ebx, X
mov ecx, Y
mov edx, Color
shl ebx, 16
shl ecx, 16
or ebx, Width
or ecx, Height
int $40
pop ebx
end;
function GetScreenMax: TPoint; stdcall;
asm
mov eax, 14
int $40
end;
procedure SetBackgroundSize(Width, Height: LongWord); stdcall;
asm
push ebx
mov eax, 15
mov ebx, 1
mov ecx, Width
mov edx, Height
int $40
pop ebx
end;
procedure SetBackgroundPixel(X, Y: LongInt; Color: LongWord); stdcall;
asm
push ebx
// at first need to know Background.Width
mov eax, 39
mov ebx, 1
int $40
// at now eax = (Width << 16) | Height
// need to make ecx = (X + Y * Background.Width) * 3
shr eax, 16
mul Y
add eax, X
mov ecx, eax
add ecx, eax
add ecx, eax
// and now SetBackgroundPixel
mov eax, 15
mov ebx, 2
mov edx, Color
int $40
pop ebx
end;
procedure DrawBackground; stdcall;
asm
push ebx
mov eax, 15
mov ebx, 3
int $40
pop ebx
end;
procedure SetBackgroundDrawMode(DrawMode: LongWord); stdcall;
asm
push ebx
mov eax, 15
mov ebx, 4
mov ecx, DrawMode
int $40
pop ebx
end;
procedure DrawBackgroundImage(const Image; X, Y: LongInt; Width, Height: LongWord); stdcall;
asm
push ebx
push esi
// at first need to know Background.Width
mov eax, 39
mov ebx, 1
int $40
// at now eax = (Width << 16) | Height
// need to make edx = (X + Y * Background.Width) * 3
shr eax, 16
mul Y
add eax, X
mov edx, eax
add edx, eax
add edx, eax
// need to make esi = Width * Height * 3
mov eax, Width
mul Height
mov esi, eax
add esi, eax
add esi, eax
// and now DrawBackgroundImage
mov eax, 15
mov ebx, 5
mov ecx, Image
int $40
pop esi
pop ebx
end;
function MapBackground: Pointer; stdcall;
asm
push ebx
mov eax, 15
mov ebx, 6
int $40
pop ebx
end;
function UnmapBackground(Background: Pointer): LongInt; stdcall;
asm
push ebx
mov eax, 15
mov ebx, 7
mov ecx, Background
int $40
pop ebx
end;
function GetLastDrawnBackgroundRect: TRect; stdcall;
asm
push ebx
push edi
mov edi, eax
mov eax, 15
mov ebx, 8
int $40
movzx edx, ax
movzx ecx, bx
shr eax, 16
shr ebx, 16
mov [edi].TRect.Left, eax
mov [edi].TRect.Right, edx
mov [edi].TRect.Top, ebx
mov [edi].TRect.Bottom, ecx
pop edi
pop ebx
end;
procedure UpdateBackgroundRect(Left, Top, Right, Bottom: LongInt); stdcall;
asm
push ebx
mov eax, 15
mov ebx, 9
mov ecx, Left
mov edx, Top
shl ecx, 16
shl edx, 16
or ecx, Right
or edx, Bottom
int $40
pop ebx
end;
function FlushFloppyCache(FloppyNumber: LongWord): LongWord; stdcall;
asm
push ebx
mov eax, 15
mov ebx, FloppyNumber
int $40
pop ebx
end;
function GetButton: TButtonInput; stdcall;
asm
mov eax, 17
int $40
end;
procedure DeactivateWindow(Slot: LongWord); stdcall;
asm
push ebx
mov eax, 18
mov ebx, 1
mov ecx, Slot
int $40
pop ebx
end;
procedure TerminateThreadBySlot(Slot: LongWord); stdcall;
asm
push ebx
mov eax, 18
mov ebx, 2
mov ecx, Slot
int $40
pop ebx
end;
procedure ActivateWindow(Slot: LongWord); stdcall;
asm
push ebx
mov eax, 18
mov ebx, 3
mov ecx, Slot
int $40
pop ebx
end;
function GetIdleTime: LongWord; stdcall;
asm
push ebx
mov eax, 18
mov ebx, 4
int $40
pop ebx
end;
function GetCPUClock: LongWord; stdcall;
asm
push ebx
mov eax, 18
mov ebx, 5
int $40
pop ebx
end;
function SaveRamDisk(FileName: PKolibriChar): LongWord; stdcall;
asm
push ebx
mov eax, 18
mov ebx, 1
mov ecx, FileName
int $40
pop ebx
end;
function GetActiveWindow: LongWord; stdcall;
asm
push ebx
mov eax, 18
mov ebx, 7
int $40
pop ebx
end;
function GetSpeakerState: LongInt; stdcall;
asm
push ebx
mov eax, 18
mov ebx, 8
mov ecx, 1
int $40
pop ebx
end;
procedure SwitchSpeakerState; stdcall;
asm
push ebx
mov eax, 18
mov ebx, 8
mov ecx, 2
int $40
pop ebx
end;
function SystemShutdown(Param: LongWord): LongInt; stdcall;
asm
push ebx
mov eax, 18
mov ebx, 9
mov ecx, Param
int $40
pop ebx
end;
procedure MinimizeActiveWindow; stdcall;
asm
push ebx
mov eax, 18
mov ebx, 10
int $40
pop ebx
end;
procedure GetDiskSystemInfo(var Buffer); stdcall;
asm
push ebx
mov eax, 18
mov ebx, 11
mov ecx, Buffer
int $40
pop ebx
end;
procedure GetKernelVersion(var Buffer: TKernelVersion); stdcall;
asm
push ebx
mov eax, 18
mov ebx, 13
mov ecx, Buffer
int $40
pop ebx
end;
function WaitRetrace: LongInt; stdcall;
asm
push ebx
mov eax, 18
mov ebx, 14
int $40
pop ebx
end;
function CenterMousePointer: LongInt; stdcall;
asm
push ebx
mov eax, 18
mov ebx, 15
int $40
pop ebx
end;
function GetFreeMemory: LongWord; stdcall;
asm
push ebx
mov eax, 18
mov ebx, 16
int $40
pop ebx
end;
function GetAvailableMemory: LongWord; stdcall;
asm
push ebx
mov eax, 18
mov ebx, 17
int $40
pop ebx
end;
function TerminateThreadById(ID: LongWord): LongInt; stdcall;
asm
push ebx
mov eax, 18
mov ebx, 18
mov ecx, ID
int $40
pop ebx
end;
function GetMouseSpeed: LongWord; stdcall;
asm
push ebx
mov eax, 18
mov ebx, 19
mov ecx, 0
int $40
pop ebx
end;
procedure SetMouseSpeed(Speed: LongWord); stdcall;
asm
push ebx
mov eax, 18
mov ebx, 19
mov ecx, 1
mov edx, Speed
int $40
pop ebx
end;
function GetMouseSensitivity: LongWord; stdcall;
asm
push ebx
mov eax, 18
mov ebx, 19
mov ecx, 2
int $40
pop ebx
end;
procedure SetMouseSensitivity(Sensitivity: LongWord); stdcall;
asm
push ebx
mov eax, 18
mov ebx, 19
mov ecx, 3
mov edx, Sensitivity
int $40
pop ebx
end;
procedure SetMousePos(X, Y: LongInt); stdcall;
asm
push ebx
mov eax, 18
mov ebx, 19
mov ecx, 4
mov edx, X
shl edx, 16
or edx, Y
int $40
pop ebx
end;
procedure SetMouseButtons(State: LongWord); stdcall;
asm
push ebx
mov eax, 18
mov ebx, 19
mov ecx, 5
mov edx, State
int $40
pop ebx
end;
function GetDoubleClickTime: LongWord; stdcall;
asm
push ebx
mov eax, 18
mov ebx, 19
mov ecx, 6
int $40
pop ebx
end;
procedure SetDoubleClickTime(Time: LongWord); stdcall;
asm
push ebx
mov eax, 18
mov ebx, 19
mov ecx, 7
mov edx, Time
int $40
pop ebx
end;
function GetRAMInfo(var Buffer: TRAMInfo): LongInt; stdcall;
asm
push ebx
mov eax, 18
mov ebx, 20
mov ecx, Buffer
int $40
pop ebx
end;
function GetSlotById(ID: LongWord): LongWord; stdcall;
asm
push ebx
mov eax, 18
mov ebx, 21
mov ecx, ID
int $40
pop ebx
end;
function MinimizeWindowBySlot(Slot: LongWord): LongInt; stdcall;
asm
push ebx
mov eax, 18
mov ebx, 22
mov ecx, 0
mov edx, Slot
int $40
pop ebx
end;
function MinimizeWindowByID(ID: LongWord): LongInt; stdcall;
asm
push ebx
mov eax, 18
mov ebx, 22
mov ecx, 1
mov edx, ID
int $40
pop ebx
end;
function RestoreWindowBySlot(Slot: LongWord): LongInt; stdcall;
asm
push ebx
mov eax, 18
mov ebx, 22
mov ecx, 2
mov edx, Slot
int $40
pop ebx
end;
function RestoreWindowByID(ID: LongWord): LongInt; stdcall;
asm
push ebx
mov eax, 18
mov ebx, 22
mov ecx, 3
mov edx, ID
int $40
pop ebx
end;
function MinimizeAllWindows: LongWord; stdcall;
asm
push ebx
mov eax, 18
mov ebx, 23
int $40
pop ebx
end;
procedure SetScreenLimits(Width, Height: LongWord); stdcall;
asm
push ebx
mov eax, 18
mov ebx, 24
mov ecx, Width
mov edx, Height
int $40
pop ebx
end;
function GetWindowZOrder(ID: LongWord): LongWord; stdcall;
asm
push ebx
mov eax, 18
mov ebx, 25
mov ecx, 1
mov edx, ID
int $40
pop ebx
end;
function SetWindowZOrder(ID, ZOrder: LongWord): LongInt; stdcall;
asm
push ebx
push esi
mov eax, 18
mov ebx, 25
mov ecx, 2
mov edx, ID
mov esi, ZOrder
int $40
pop esi
pop ebx
end;
{UNDEFINED}
function ResetMidi: LongInt; stdcall;
asm
push ebx
mov eax, 20
mov ebx, 1
int $40
pop ebx
end;
function OutputMidi(Data: Byte): LongInt; stdcall;
asm
push ebx
mov eax, 20
mov ebx, 2
mov cl, Data
int $40
pop ebx
end;
function SetMidiBase(Port: LongWord): LongInt; stdcall;
asm
push ebx
mov eax, 21
mov ebx, 1
mov ecx, Port
int $40
pop ebx
end;
function SetKeyboardLayout(Flags: LongWord; var Table: TKeyboardLayout): LongInt; stdcall;
asm
push ebx
mov eax, 21
mov ebx, 2
mov ecx, Flags
mov edx, Table
int $40
pop ebx
end;
function SetKeyboardLayoutCountry(Country: LongWord): LongInt; stdcall;
asm
push ebx
mov eax, 21
mov ebx, 2
mov ecx, 9
mov edx, Country
int $40
pop ebx
end;
function SetSystemLanguage(SystemLanguage: LongWord): LongInt; stdcall;
asm
push ebx
mov eax, 21
mov ebx, 5
mov ecx, SystemLanguage
int $40
pop ebx
end;
function SetHDAccess(Value: LongWord): LongInt; stdcall;
asm
push ebx
mov eax, 21
mov ebx, 11
mov ecx, Value
int $40
pop ebx
end;
function SetPCIAccess(Value: LongWord): LongInt; stdcall;
asm
push ebx
mov eax, 21
mov ebx, 12
mov ecx, Value
int $40
pop ebx
end;
function SetSystemTime(Time: TSystemTime): LongInt; stdcall;
asm
push ebx
mov eax, 22
mov ebx, 0
mov ecx, Time
int $40
pop ebx
end;
function SetSystemDate(Date: TSystemDate): LongInt; stdcall;
asm
push ebx
mov eax, 22
mov ebx, 1
mov ecx, Date
int $40
pop ebx
end;
function SetDayOfWeek(DayOfWeek: LongWord): LongInt; stdcall;
asm
push ebx
mov eax, 22
mov ebx, 2
mov ecx, DayOfWeek
int $40
pop ebx
end;
function SetAlarm(Time: TSystemTime): LongInt; stdcall;
asm
push ebx
mov eax, 22
mov ebx, 3
mov ecx, Time
int $40
pop ebx
end;
function WaitEventByTime(Time: LongWord): LongWord; stdcall;
asm
push ebx
mov eax, 23
mov ebx, Time
int $40
pop ebx
end;
procedure OpenCDTray(Drive: LongWord); stdcall;
asm
push ebx
mov eax, 24
mov ebx, 4
mov ecx, Drive
int $40
pop ebx
end;
procedure CloseCDTray(Drive: LongWord); stdcall;
asm
push ebx
mov eax, 24
mov ebx, 5
mov ecx, Drive
int $40
pop ebx
end;
procedure DrawBackgroundLayerImage(const Image; X, Y: LongInt; Width, Height: LongWord); stdcall;
asm
push ebx
mov eax, 25
mov ebx, Image
mov ecx, Width
mov edx, X
shl ecx, 16
shl edx, 16
or ecx, Height
or edx, Y
int $40
pop ebx
end;
function GetMidiBase: LongWord; stdcall;
asm
push ebx
mov eax, 26
mov ebx, 1
int $40
pop ebx
end;
procedure GetKeyboardLayout(Flags: LongWord; var Table: TKeyboardLayout); stdcall;
asm
push ebx
mov eax, 26
mov ebx, 2
mov ecx, Flags
mov edx, Table
int $40
pop ebx
end;
function GetKeyboardLayoutCountry: LongWord; stdcall;
asm
push ebx
mov eax, 26
mov ebx, 2
mov ecx, 9
int $40
pop ebx
end;
function GetSystemLanguage: LongWord; stdcall;
asm
push ebx
mov eax, 26
mov ebx, 5
int $40
pop ebx
end;
function GetTickCount: LongWord; stdcall;
asm
push ebx
mov eax, 26
mov ebx, 9
int $40
pop ebx
end;
function GetTickCount64: UInt64; stdcall;
asm
push ebx
mov eax, 26
mov ebx, 10
int $40
pop ebx
end;
function IsHDAccessAllowed: LongWord; stdcall;
asm
push ebx
mov eax, 26
mov ebx, 11
int $40
pop ebx
end;
function IsPCIAccessAllowed: LongWord; stdcall;
asm
push ebx
mov eax, 26
mov ebx, 12
int $40
pop ebx
end;
{UNDEFINED}
{UNDEFINED}
function GetSystemDate: TSystemDate; stdcall;
asm
mov eax, 29
int $40
end;
procedure SetCurrentDirectory(Path: PKolibriChar); stdcall;
asm
push ebx
mov eax, 30
mov ebx, 1
mov ecx, Path
int $40
pop ebx
end;
function GetCurrentDirectory(Buffer: PKolibriChar; Count: LongWord): LongWord; stdcall;
asm
push ebx
mov eax, 30
mov ebx, 2
mov ecx, Buffer
mov edx, Count
int $40
pop ebx
end;
{UNDEFINED}
{UNDEFINED}
{UNDEFINED}
function GetPointOwner(X, Y: LongInt): LongWord; stdcall;
asm
push ebx
mov eax, 34
mov ebx, X
mov ecx, Y
int $40
pop ebx
end;
function GetPixel(X, Y: LongInt): LongWord; stdcall;
asm
push ebx
// at first need to know Screen.Width
mov eax, 61
mov ebx, 1
int $40
// at now eax = (Width << 16) | Height
// need to make ebx = Y * Screen.Width + X
shr eax, 16
mul Y
add eax, X
mov ebx, eax
// and now GetPixel
mov eax, 35
int $40
pop ebx
end;
procedure GetScreenImage(var Buffer; X, Y: LongInt; Width, Height: LongWord); stdcall;
asm
push ebx
mov eax, 36
mov ebx, Buffer
mov ecx, Width
mov edx, X
shl ecx, 16
shl edx, 16
or ecx, Height
or edx, Y
int $40
pop ebx
end;
function GetMousePos: TPoint; stdcall;
asm
push ebx
mov eax, 37
mov ebx, 0
int $40
pop ebx
end;
function GetWindowMousePos: TPoint; stdcall;
asm
push ebx
mov eax, 37
mov ebx, 1
int $40
pop ebx
end;
function GetMouseButtons: LongWord; stdcall;
asm
push ebx
mov eax, 37
mov ebx, 2
int $40
pop ebx
end;
function GetMouseEvents: LongWord; stdcall;
asm
push ebx
mov eax, 37
mov ebx, 3
int $40
pop ebx
end;
function LoadCursorFromFile(FileName: PKolibriChar): THandle; stdcall;
asm
push ebx
mov eax, 37
mov ebx, 4
mov ecx, FileName
mov edx, 0
int $40
pop ebx
end;
function LoadCursorFromMemory(const Buffer): THandle; stdcall;
asm
push ebx
mov eax, 37
mov ebx, 4
mov ecx, Buffer
mov edx, 1
int $40
pop ebx
end;
function LoadCursorIndirect(const Buffer; HotSpotX, HotSpotY: ShortInt): THandle; stdcall;
asm
push ebx
mov eax, 37
mov ebx, 4
mov ecx, Buffer
mov dl, HotSpotY
mov dh, HotSpotX
shl edx, 16
or edx, 2
int $40
pop ebx
end;
function SetCursor(Handle: THandle): THandle; stdcall;
asm
push ebx
mov eax, 37
mov ebx, 5
mov ecx, Handle
int $40
pop ebx
end;
procedure DeleteCursor(Handle: THandle); stdcall;
asm
push ebx
mov eax, 37
mov ebx, 6
mov ecx, Handle
int $40
pop ebx
end;
function GetMouseScroll: TPoint; stdcall;
asm
push ebx
mov eax, 37
mov ebx, 7
int $40
pop ebx
end;
procedure DrawLine(X1, Y1, X2, Y2: LongInt; Color: LongWord); stdcall;
asm
push ebx
mov eax, 38
mov ebx, X1
mov ecx, Y1
shl ebx, 16
shl ecx, 16
or ebx, X2
or ecx, Y2
mov edx, Color
int $40
pop ebx
end;
function GetBackgroundSize: TSize; stdcall;
asm
push ebx
mov eax, 39
mov ebx, 1
int $40
pop ebx
end;
function GetBackgroundPixel(X, Y: LongInt): LongWord; stdcall;
asm
push ebx
// at first need to know Background.Width
mov eax, 39
mov ebx, 1
int $40
// at now eax = (Width << 16) | Height
// need to make ecx = (X + Y * Background.Width) * 3
shr eax, 16
mul Y
add eax, X
mov ecx, eax
add ecx, eax
add ecx, eax
// and now GetBackgroundPixel
mov eax, 39
mov ebx, 2
int $40
pop ebx
end;
function GetBackgroundDrawMode: LongWord; stdcall;
asm
push ebx
mov eax, 39
mov ebx, 4
int $40
pop ebx
end;
function SetEventMask(Mask: LongWord): LongWord; stdcall;
asm
push ebx
mov eax, 40
mov ebx, Mask
int $40
pop ebx
end;
{UNDEFINED}
{UNDEFINED}
function InPort(Port: LongWord; var Data: Byte): LongWord; stdcall;
asm
push ebx
mov eax, 43
mov ecx, Port
or ecx, $80000000
int $40
mov ecx, Data
mov [ecx], bl
pop ebx
end;
function OutPort(Port: LongWord; Data: Byte): LongWord; stdcall;
asm
push ebx
mov eax, 43
mov bl, Data
mov ecx, Port
int $40
pop ebx
end;
{UNDEFINED}
{UNDEFINED}
function ReservePorts(First, Last: LongWord): LongWord; stdcall;
asm
push ebx
mov eax, 46
mov ebx, 0
mov ecx, First
mov edx, Last
int $40
pop ebx
end;
function FreePorts(First, Last: LongWord): LongWord; stdcall;
asm
push ebx
mov eax, 46
mov ebx, 1
mov ecx, First
mov edx, Last
int $40
pop ebx
end;
{DrawNumber}
procedure ApplyStyleSettings; stdcall;
asm
push ebx
mov eax, 48
mov ebx, 0
int $40
pop ebx
end;
procedure SetButtonStyle(ButtonStyle: LongWord); stdcall;
asm
push ebx
mov eax, 48
mov ebx, 1
mov ecx, ButtonStyle
int $40
pop ebx
end;
procedure SetStandardColors(var ColorTable: TStandardColors; Size: LongWord); stdcall;
asm
push ebx
mov eax, 48
mov ebx, 2
mov ecx, ColorTable
mov edx, Size
int $40
pop ebx
end;
procedure GetStandardColors(var ColorTable: TStandardColors; Size: LongWord); stdcall;
asm
push ebx
mov eax, 48
mov ebx, 3
mov ecx, ColorTable
mov edx, Size
int $40
pop ebx
end;
function GetSkinHeight: LongWord; stdcall;
asm
push ebx
mov eax, 48
mov ebx, 4
int $40
pop ebx
end;
function GetScreenWorkingArea: TRect; stdcall;
asm
push ebx
push edi
mov edi, eax
mov eax, 48
mov ebx, 5
int $40
movzx edx, ax
movzx ecx, bx
shr eax, 16
shr ebx, 16
mov [edi].TRect.Left, eax
mov [edi].TRect.Right, edx
mov [edi].TRect.Top, ebx
mov [edi].TRect.Bottom, ecx
pop edi
pop ebx
end;
procedure SetScreenWorkingArea(Left, Top, Right, Bottom: LongInt); stdcall;
asm
push ebx
mov eax, 48
mov ebx, 6
mov ecx, Left
mov edx, Top
shl ecx, 16
shl edx, 16
or ecx, Right
or edx, Bottom
int $40
pop ebx
end;
function GetSkinMargins: TRect; stdcall;
asm
push ebx
push edi
mov edi, eax
mov eax, 48
mov ebx, 7
int $40
movzx edx, ax
movzx ecx, bx
shr eax, 16
shr ebx, 16
mov [edi].TRect.Left, eax
mov [edi].TRect.Right, edx
mov [edi].TRect.Top, ebx
mov [edi].TRect.Bottom, ecx
pop edi
pop ebx
end;
function SetSkin(FileName: PKolibriChar): LongInt; stdcall;
asm
push ebx
mov eax, 48
mov ebx, 8
mov ecx, FileName
int $40
pop ebx
end;
function GetFontSmoothing: LongInt; stdcall;
asm
push ebx
mov eax, 48
mov ebx, 9
int $40
pop ebx
end;
procedure SetFontSmoothing(Smoothing: LongInt); stdcall;
asm
push ebx
mov eax, 48
mov ebx, 10
mov ecx, Smoothing
int $40
pop ebx
end;
function GetFontHeight: LongWord; stdcall;
asm
push ebx
mov eax, 48
mov ebx, 11
int $40
pop ebx
end;
procedure SetFontHeight(Height: LongWord); stdcall;
asm
push ebx
mov eax, 48
mov ebx, 12
mov ecx, Height
int $40
pop ebx
end;
{Advanced Power Management}
procedure SetWindowShape(const Data); stdcall;
asm
push ebx
mov eax, 50
mov ebx, 0
mov ecx, Data
int $40
pop ebx
end;
procedure SetWindowScale(Scale: LongWord); stdcall;
asm
push ebx
mov eax, 50
mov ebx, 1
mov ecx, Scale
int $40
pop ebx
end;
function CreateThread(Entry, Stack: Pointer): LongWord; stdcall;
asm
push ebx
mov eax, 51
mov ebx, 1
mov ecx, Entry
mov edx, Stack
int $40
pop ebx
end;
{UNDEFINED}
{UNDEFINED}
function GetClipboardSlotCount: LongInt; stdcall;
asm
push ebx
mov eax, 54
mov ebx, 0
int $40
pop ebx
end;
function GetClipboardData(Slot: LongWord): Pointer; stdcall;
asm
push ebx
mov eax, 54
mov ebx, 1
mov ecx, Slot
int $40
pop ebx
end;
function SetClipboardData(const Src; Count: LongWord): LongInt; stdcall;
asm
push ebx
mov eax, 54
mov ebx, 2
mov ecx, Count
mov edx, Src
int $40
pop ebx
end;
function DeleteClipboardLastSlot: LongInt; stdcall;
asm
push ebx
mov eax, 54
mov ebx, 3
int $40
pop ebx
end;
function ResetClipboard: LongInt; stdcall;
asm
push ebx
mov eax, 54
mov ebx, 4
int $40
pop ebx
end;
function SpeakerPlay(const Data): LongWord; stdcall;
asm
push ebx
push esi
mov eax, 55
mov ebx, 55
mov esi, Data
int $40
pop esi
pop ebx
end;
{UNDEFINED}
{PCI BIOS}
{UNDEFINED}
{UNDEFINED}
function IPCSetBuffer(const Buffer: TIPCBuffer; Size: LongWord): LongInt; stdcall;
asm
push ebx
mov eax, 60
mov ebx, 1
mov ecx, Buffer
mov edx, Size
int $40
pop ebx
end;
function IPCSendMessage(ID: LongWord; var Msg: TIPCMessage; Size: LongWord): LongInt; stdcall;
asm
push ebx
push esi
mov eax, 60
mov ebx, 2
mov ecx, ID
mov edx, Msg
mov esi, Size
int $40
pop esi
pop ebx
end;
function GetScreenSize: TSize; stdcall;
asm
push ebx
mov eax, 61
mov ebx, 1
int $40
pop ebx
end;
function GetScreenBitsPerPixel: LongWord; stdcall;
asm
push ebx
mov eax, 61
mov ebx, 2
int $40
pop ebx
end;
function GetScreenBytesPerScanLine: LongWord; stdcall;
asm
push ebx
mov eax, 61
mov ebx, 3
int $40
pop ebx
end;
function GetPCIVersion: LongWord; stdcall;
asm
push ebx
mov eax, 62
mov bl, 0
int $40
pop ebx
end;
function GetLastPCIBus: LongWord; stdcall;
asm
push ebx
mov eax, 62
mov bl, 1
int $40
pop ebx
end;
function GetPCIAddressingMode: LongWord; stdcall;
asm
push ebx
mov eax, 62
mov bl, 2
int $40
pop ebx
end;
function ReadPCIByte(Bus, Device, Func, Reg: Byte): Byte; stdcall;
asm
push ebx
mov eax, 62
mov bl, 4
mov bh, Bus
mov cl, Reg
mov ch, Device
shl ch, 3
or ch, Func
int $40
pop ebx
end;
function ReadPCIWord(Bus, Device, Func, Reg: Byte): Word; stdcall;
asm
push ebx
mov eax, 62
mov bl, 5
mov bh, Bus
mov cl, Reg
mov ch, Device
shl ch, 3
or ch, Func
int $40
pop ebx
end;
function ReadPCILongWord(Bus, Device, Func, Reg: Byte): LongWord; stdcall;
asm
push ebx
mov eax, 62
mov bl, 6
mov bh, Bus
mov cl, Reg
mov ch, Device
shl ch, 3
or ch, Func
int $40
pop ebx
end;
function WritePCIByte(Bus, Device, Func, Reg: Byte; Data: Byte): LongWord; stdcall;
asm
push ebx
mov eax, 62
mov bl, 8
mov bh, Bus
mov cl, Reg
mov ch, Device
shl ch, 3
or ch, Func
mov dl, Data
int $40
pop ebx
end;
function WritePCIWord(Bus, Device, Func, Reg: Byte; Data: Word): LongWord; stdcall;
asm
push ebx
mov eax, 62
mov bl, 9
mov bh, Bus
mov cl, Reg
mov ch, Device
shl ch, 3
or ch, Func
mov dx, Data
int $40
pop ebx
end;
function WritePCILongWord(Bus, Device, Func, Reg: Byte; Data: LongWord): LongWord; stdcall;
asm
push ebx
mov eax, 62
mov bl, 10
mov bh, Bus
mov cl, Reg
mov ch, Device
shl ch, 3
or ch, Func
mov edx, Data
int $40
pop ebx
end;
procedure DebugWrite(Data: Byte); stdcall;
asm
push ebx
mov eax, 63
mov ebx, 1
mov cl, Data
int $40
pop ebx
end;
function DebugRead(var Data: Byte): LongWord; stdcall;
asm
push ebx
mov eax, 63
mov ebx, 2
int $40
mov ecx, Data
mov [ecx], al
mov eax, ebx
pop ebx
end;
function ReallocAppMemory(Count: LongWord): LongInt; stdcall;
asm
push ebx
mov eax, 64
mov ebx, 1
mov ecx, Count
int $40
pop ebx
end;
procedure DrawImageEx(const Image; Left, Top: LongInt; Width, Height, BPP: LongWord; Palette: Pointer; Padding: LongWord); stdcall;
asm
push ebx
push esi
push edi
mov eax, 65
mov ebx, Image
mov ecx, Width
mov edx, Left
shl ecx, 16
shl edx, 16
or ecx, Height
or edx, Top
mov esi, BPP
mov edi, Palette
mov ebp, Padding
int $40
pop edi
pop esi
pop ebx
end;
procedure SetKeyboardInputMode(Mode: LongWord); stdcall;
asm
push ebx
mov eax, 66
mov ebx, 1
mov ecx, Mode
int $40
pop ebx
end;
function GetKeyboardInputMode: LongWord; stdcall;
asm
push ebx
mov eax, 66
mov ebx, 2
int $40
pop ebx
end;
function GetControlKeyState: LongWord; stdcall;
asm
push ebx
mov eax, 66
mov ebx, 3
int $40
pop ebx
end;
function SetHotKey(ScanCode, Control: LongWord): LongInt; stdcall;
asm
push ebx
mov eax, 66
mov ebx, 4
mov ecx, ScanCode
mov edx, Control
int $40
pop ebx
end;
function ResetHotKey(ScanCode, Control: LongWord): LongInt; stdcall;
asm
push ebx
mov eax, 66
mov ebx, 4
mov ecx, ScanCode
mov edx, Control
int $40
pop ebx
end;
procedure LockKeyboard; stdcall;
asm
push ebx
mov eax, 66
mov ebx, 6
int $40
pop ebx
end;
procedure UnlockKeyboard; stdcall;
asm
push ebx
mov eax, 66
mov ebx, 7
int $40
pop ebx
end;
procedure SetWindowPos(Left, Top, Width, Height: LongInt); stdcall;
asm
push ebx
push esi
mov eax, 67
mov ebx, Left
mov ecx, Top
mov edx, Width
mov esi, Height
int $40
pop esi
pop ebx
end;
function GetTaskSwitchCount: LongWord; stdcall;
asm
push ebx
mov eax, 68
mov ebx, 0
int $40
pop ebx
end;
procedure SwitchThread; stdcall;
asm
push ebx
mov eax, 68
mov ebx, 1
int $40
pop ebx
end;
function EnableRDPMC: LongWord; stdcall;
asm
push ebx
mov eax, 68
mov ebx, 2
mov ecx, 0
int $40
pop ebx
end;
function IsCacheEnabled: LongWord; stdcall;
asm
push ebx
mov eax, 68
mov ebx, 2
mov ecx, 1
int $40
pop ebx
end;
procedure EnableCache; stdcall;
asm
push ebx
mov eax, 68
mov ebx, 2
mov ecx, 2
int $40
pop ebx
end;
procedure DisableCache; stdcall;
asm
push ebx
mov eax, 68
mov ebx, 2
mov ecx, 3
int $40
pop ebx
end;
function HeapInit: LongWord; stdcall;
asm
push ebx
mov eax, 68
mov ebx, 11
int $40
pop ebx
end;
function HeapAllocate(Bytes: LongWord): Pointer; stdcall;
asm
push ebx
mov eax, 68
mov ebx, 12
mov ecx, Bytes
int $40
pop ebx
end;
function HeapFree(MemPtr: Pointer): LongWord; stdcall;
asm
push ebx
mov eax, 68
mov ebx, 13
mov ecx, MemPtr
int $40
pop ebx
end;
procedure WaitSignal(var Buffer: TSignalBuffer); stdcall;
asm
push ebx
mov eax, 68
mov ebx, 14
mov ecx, Buffer
int $40
pop ebx
end;
function LoadDriver(Name: PKolibriChar): THandle; stdcall;
asm
push ebx
mov eax, 68
mov ebx, 16
mov ecx, Name
int $40
pop ebx
end;
function ControlDriver(var CtrlStructure: TDriverControl): LongWord; stdcall;
asm
push ebx
mov eax, 68
mov ebx, 17
mov ecx, CtrlStructure
int $40
pop ebx
end;
function LoadLibrary(FileName: PKolibriChar): Pointer; stdcall;
asm
push ebx
mov eax, 68
mov ebx, 19
mov ecx, FileName
int $40
pop ebx
end;
function HeapReallocate(MemPtr: Pointer; Bytes: LongWord): Pointer; stdcall;
asm
push ebx
mov eax, 68
mov ebx, 20
mov ecx, Bytes
mov edx, MemPtr
int $40
pop ebx
end;
function LoadPEDriver(Name, CmdLine: PKolibriChar): THandle; stdcall;
asm
push ebx
mov eax, 68
mov ebx, 21
mov ecx, Name
mov edx, CmdLine
int $40
pop ebx
end;
function OpenSharedMemory(Name: PKolibriChar; Bytes: LongWord; Flags: LongWord): Pointer; stdcall;
asm
push ebx
push esi
mov eax, 68
mov ebx, 22
mov ecx, Name
mov edx, Bytes
mov esi, Flags
int $40
pop esi
pop ebx
end;
function CloseSharedMemory(Name: PKolibriChar): LongWord; stdcall;
asm
push ebx
mov eax, 68
mov ebx, 23
mov ecx, Name
int $40
pop ebx
end;
function SetExceptionHandler(Handler: Pointer; Mask: LongWord; var OldMask: LongWord): Pointer; stdcall;
asm
push ebx
mov eax, 68
mov ebx, 24
mov ecx, Handler
mov edx, Mask
int $40
mov ecx, OldMask
mov [ecx], ebx
pop ebx
end;
function SetExceptionActivity(Signal, Activity: LongWord): LongInt; stdcall;
asm
push ebx
mov eax, 68
mov ebx, 25
mov ecx, Signal
mov edx, Activity
int $40
pop ebx
end;
procedure ReleaseMemoryPages(MemPtr: Pointer; Offset, Size: LongWord); stdcall;
asm
push ebx
push esi
mov eax, 68
mov ebx, 26
mov ecx, MemPtr
mov edx, &Offset
mov esi, Size
int $40
pop esi
pop ebx
end;
function LoadFile(FileName: PKolibriChar; var Size: LongWord): Pointer; stdcall;
asm
push ebx
mov eax, 68
mov ebx, 27
mov ecx, FileName
int $40
mov ecx, Size
mov [ecx], edx
pop ebx
end;
procedure SetDebugBuffer(const Buffer: TDebugBuffer); stdcall;
asm
push ebx
mov eax, 69
mov ebx, 0
mov ecx, Buffer
int $40
pop ebx
end;
procedure GetThreadContext(ID: LongWord; var Context: TThreadContext); stdcall;
const
SIZEOF_TTHREADCONTEXT = SizeOf(TThreadContext);
asm
push ebx
push esi
mov eax, 69
mov ebx, 1
mov ecx, ID
mov edx, SIZEOF_TTHREADCONTEXT
mov esi, Context
int $40
pop esi
pop ebx
end;
procedure SetThreadContext(ID: LongWord; const Context: TThreadContext); stdcall;
const
SIZEOF_TTHREADCONTEXT = SizeOf(TThreadContext);
asm
push ebx
push esi
mov eax, 69
mov ebx, 2
mov ecx, ID
mov edx, SIZEOF_TTHREADCONTEXT
mov esi, Context
int $40
pop esi
pop ebx
end;
procedure DetachThread(ID: LongWord); stdcall;
asm
push ebx
mov eax, 69
mov ebx, 3
mov ecx, ID
int $40
pop ebx
end;
procedure SuspendThread(ID: LongWord); stdcall;
asm
push ebx
mov eax, 69
mov ebx, 4
mov ecx, ID
int $40
pop ebx
end;
procedure ResumeThread(ID: LongWord); stdcall;
asm
push ebx
mov eax, 69
mov ebx, 5
mov ecx, ID
int $40
pop ebx
end;
function ReadProcessMemory(ID, Count: LongWord; const Src; var Dst): LongInt; stdcall;
asm
push ebx
push esi
push edi
mov eax, 69
mov ebx, 6
mov ecx, ID
mov edx, Count
mov esi, Src
mov edi, Dst
int $40
pop edi
pop esi
pop ebx
end;
function WriteProcessMemory(ID, Count: LongWord; const Src; var Dst): LongInt; stdcall;
asm
push ebx
push esi
push edi
mov eax, 69
mov ebx, 7
mov ecx, ID
mov edx, Count
mov esi, Dst
mov edi, Src
int $40
pop edi
pop esi
pop ebx
end;
procedure DebugTerminate(ID: LongWord); stdcall;
asm
push ebx
mov eax, 69
mov ebx, 8
mov ecx, ID
int $40
pop ebx
end;
function SetBreakPoint(ID: LongWord; Index, Flags: Byte; Address: Pointer): LongInt; stdcall;
asm
push ebx
push esi
mov eax, 69
mov ebx, 9
mov ecx, ID
mov dl, Index
mov dh, Flags
mov esi, Address
int $40
pop esi
pop ebx
end;
function ResetBreakPoint(ID: LongWord; Index, Flags: Byte; Address: Pointer): LongInt; stdcall;
asm
push ebx
push esi
mov eax, 69
mov ebx, 9
mov ecx, ID
mov dl, Index
mov dh, Flags
or dh, $80
mov esi, Address
int $40
pop esi
pop ebx
end;
function ReadFile(FileName: PKolibriChar; var Buffer; Count: LongWord; Pos: UInt64; var BytesRead: LongWord): LongInt; stdcall;
asm
push ebx
push FileName
dec esp
mov byte[esp], 0
push Buffer
push Count
push dword[Pos+4]
push dword[Pos]
push 0
mov ebx, esp
mov eax, 70
int $40
add esp, 25
mov ecx, BytesRead
mov [ecx], ebx
pop ebx
end;
function ReadFolder(Path: PKolibriChar; var Buffer; Count, Start, Flags: LongWord; var BlocksRead: LongWord): LongInt; stdcall;
asm
push ebx
push Path
dec esp
mov byte[esp], 0
push Buffer
push Count
push Flags
push Start
push 1
mov ebx, esp
mov eax, 70
int $40
add esp, 25
mov ecx, BlocksRead
mov [ecx], ebx
pop ebx
end;
function CreateFile(FileName: PKolibriChar): LongInt; stdcall;
asm
push ebx
push FileName
dec esp
mov byte[esp], 0
push 0
push 0
push 0
push 0
push 2
mov ebx, esp
mov eax, 70
int $40
add esp, 25
pop ebx
end;
function WriteFile(FileName: PKolibriChar; const Buffer; Count: LongWord; Pos: UInt64; var BytesWritten: LongWord): LongInt; stdcall;
asm
push ebx
push FileName
dec esp
mov byte[esp], 0
push Buffer
push Count
push dword[Pos+4]
push dword[Pos]
push 3
mov ebx, esp
mov eax, 70
int $40
add esp, 25
mov ecx, BytesWritten
mov [ecx], ebx
pop ebx
end;
function ResizeFile(FileName: PKolibriChar; Size: UInt64): LongInt; stdcall;
asm
push ebx
push FileName
dec esp
mov byte[esp], 0
push 0
push 0
push dword [Size+4]
push dword [Size]
push 4
mov ebx, esp
mov eax, 70
int $40
add esp, 25
pop ebx
end;
function GetFileAttributes(FileName: PKolibriChar; var Buffer: TFileAttributes): LongWord; stdcall;
asm
push ebx
push FileName
dec esp
mov byte[esp], 0
push Buffer
push 0
push 0
push 0
push 5
mov ebx, esp
mov eax, 70
int $40
add esp, 25
pop ebx
end;
function SetFileAttributes(FileName: PKolibriChar; var Buffer: TFileAttributes): LongWord; stdcall;
asm
push ebx
push FileName
dec esp
mov byte[esp], 0
push Buffer
push 0
push 0
push 0
push 6
mov ebx, esp
mov eax, 70
int $40
add esp, 25
pop ebx
end;
function RunFile(FileName, CmdLine: PKolibriChar): LongInt; stdcall;
asm
push ebx
push FileName
dec esp
mov byte[esp], 0
push 0
push 0
push CmdLine
push 0
push 7
mov ebx, esp
mov eax, 70
int $40
add esp, 25
pop ebx
end;
function DebugFile(FileName, CommandLine: PKolibriChar): LongInt; stdcall;
asm
push ebx
push FileName
dec esp
mov byte[esp], 0
push 0
push 0
push CommandLine
push 1
push 7
mov ebx, esp
mov eax, 70
int $40
add esp, 25
pop ebx
end;
function DeleteFile(FileName: PKolibriChar): LongInt; stdcall;
asm
push ebx
push FileName
dec esp
mov byte[esp], 0
push 0
push 0
push 0
push 0
push 8
mov ebx, esp
mov eax, 70
int $40
add esp, 25
pop ebx
end;
function CreateFolder(Path: PKolibriChar): LongInt; stdcall;
asm
push ebx
push Path
dec esp
mov byte[esp], 0
push 0
push 0
push 0
push 0
push 9
mov ebx, esp
mov eax, 70
int $40
add esp, 25
pop ebx
end;
procedure SetWindowCaption(Caption: PKolibriChar); stdcall;
asm
push ebx
mov eax, 71
mov ebx, 1
mov ecx, Caption
int $40
pop ebx
end;
function SendActiveWindowKey(KeyCode: LongWord): LongInt; stdcall;
asm
push ebx
mov eax, 72
mov ebx, 1
mov ecx, 2
mov edx, KeyCode
int $40
pop ebx
end;
function SendActiveWindowButton(ButtonID: LongWord): LongInt; stdcall;
asm
push ebx
mov eax, 72
mov ebx, 1
mov ecx, 3
mov edx, ButtonID
int $40
pop ebx
end;
procedure Blit(const Src; SrcX, SrcY: LongInt; SrcW, SrcH: LongWord; DstX, DstY: LongInt; DstW, DstH, Stride, Flags: LongWord); stdcall;
asm
push ebx
push Stride
push Src
push SrcH
push SrcW
push SrcY
push SrcX
push DstH
push DstW
push DstY
push DstX
mov eax, 73
mov ebx, Flags
mov ecx, esp
int $40
add esp, 40
pop ebx
end;
function GetActiveNetworkDevices: LongWord; stdcall;
asm
push ebx
mov eax, 74
mov bl, -1
int $40
pop ebx
end;
function GetNetworkDeviceType(Device: Byte): LongInt; stdcall;
asm
push ebx
mov eax, 74
mov bl, 0
mov bh, Device
int $40
pop ebx
end;
function GetNetworkDeviceName(Device: Byte; var Buffer): LongInt; stdcall;
asm
push ebx
mov eax, 74
mov bl, 1
mov bh, Device
mov ecx, Buffer
int $40
pop ebx
end;
function ResetNetworkDevice(Device: Byte): LongInt; stdcall;
asm
push ebx
mov eax, 74
mov bl, 2
mov bh, Device
int $40
pop ebx
end;
function StopNetworkDevice(Device: Byte): LongInt; stdcall;
asm
push ebx
mov eax, 74
mov bl, 3
mov bh, Device
int $40
pop ebx
end;
function GetNetworkDevicePointer(Device: Byte): Pointer; stdcall;
asm
push ebx
mov eax, 74
mov bl, 4
mov bh, Device
int $40
pop ebx
end;
function GetSentPackets(Device: Byte): LongInt; stdcall;
asm
push ebx
mov eax, 74
mov bl, 6
mov bh, Device
int $40
pop ebx
end;
function GetReceivedPackets(Device: Byte): LongInt; stdcall;
asm
push ebx
mov eax, 74
mov bl, 7
mov bh, Device
int $40
pop ebx
end;
function GetSentBytes(Device: Byte): UInt64; stdcall;
asm
push ebx
mov eax, 74
mov bl, 8
mov bh, Device
int $40
mov edx, ebx
pop ebx
end;
function GetReceivedBytes(Device: Byte): UInt64; stdcall;
asm
push ebx
mov eax, 74
mov bl, 9
mov bh, Device
int $40
mov edx, ebx
pop ebx
end;
function GetLinkStatus(Device: Byte): LongInt; stdcall;
asm
push ebx
mov eax, 74
mov bl, 10
mov bh, Device
int $40
pop ebx
end;
function SocketOpen(Domain, Kind, Protocol: LongWord): LongWord; stdcall;
asm
push ebx
push esi
mov eax, 75
mov bl, 0
mov ecx, Domain
mov edx, Kind
mov esi, Protocol
int $40
pop esi
pop ebx
end;
function SocketClose(Socket: LongWord): LongInt; stdcall;
asm
push ebx
mov eax, 75
mov bl, 1
mov ecx, Socket
int $40
pop ebx
end;
function SocketBind(Socket: LongWord; var SockAddr: TSockAddr): LongInt; stdcall;
const
SIZEOF_TSOCKADDR = SizeOf(TSockAddr);
asm
push ebx
push esi
mov eax, 75
mov bl, 2
mov ecx, Socket
mov edx, SockAddr
mov esi, SIZEOF_TSOCKADDR
int $40
pop esi
pop ebx
end;
function SocketListen(Socket: LongWord; var BackLog): LongInt; stdcall;
asm
push ebx
mov eax, 75
mov bl, 3
mov ecx, Socket
mov edx, BackLog
int $40
pop ebx
end;
function SocketConnect(Socket: LongWord; var SockAddr: TSockAddr): LongInt; stdcall;
const
SIZEOF_TSOCKADDR = SizeOf(TSockAddr);
asm
push ebx
push esi
mov eax, 75
mov bl, 4
mov ecx, Socket
mov edx, SockAddr
mov esi, SIZEOF_TSOCKADDR
int $40
pop esi
pop ebx
end;
function SocketAccept(Socket: LongWord; var SockAddr: TSockAddr): LongWord; stdcall;
const SIZEOF_TSOCKADDR = SizeOf(TSockAddr);
asm
push ebx
push esi
mov eax, 75
mov bl, 5
mov ecx, Socket
mov edx, SockAddr
mov esi, SIZEOF_TSOCKADDR
int $40
pop esi
pop ebx
end;
function SocketSend(Socket: LongWord; const Buffer; Size, Flags: LongWord): LongInt; stdcall;
asm
push ebx
push esi
push edi
mov eax, 75
mov bl, 6
mov ecx, Socket
mov edx, Buffer
mov esi, Size
mov edi, Flags
int $40
pop edi
pop esi
pop ebx
end;
function SocketReceive(Socket: LongWord; var Buffer; Size, Flags: LongWord): LongInt; stdcall;
asm
push ebx
push esi
push edi
mov eax, 75
mov bl, 7
mov ecx, Socket
mov edx, Buffer
mov esi, Size
mov edi, Flags
int $40
pop edi
pop esi
pop ebx
end;
function SetSocketOptions(Socket: LongWord; var OptStruct: TOptStruct): LongInt; stdcall;
asm
push ebx
mov eax, 75
mov bl, 8
mov ecx, Socket
mov edx, OptStruct
int $40
pop ebx
end;
function GetSocketOptions(Socket: LongWord; var OptStruct: TOptStruct): LongInt; stdcall;
asm
push ebx
mov eax, 75
mov bl, 9
mov ecx, Socket
mov edx, OptStruct
int $40
pop ebx
end;
function GetSocketPair(var Socket1, Socket2: LongWord): LongInt; stdcall;
asm
push ebx
mov eax, 75
mov bl, 10
int $40
mov ecx, Socket1
mov edx, Socket2
mov [ecx], eax
mov [edx], ebx
pop ebx
end;
function GetMAC(Device: Byte): UInt64; stdcall;
asm
push ebx
mov eax, 76
xor ebx, ebx
mov bh, Device
int $40
movzx ecx, bx
cmp eax, -1
jne @next
mov ecx, eax
@next:
mov edx, ecx
pop ebx
end;
function GetIPv4SentPackets(Device: Byte): LongWord; stdcall;
asm
push ebx
mov eax, 76
mov ebx, $00010000
mov bl, 0
mov bh, Device
int $40
pop ebx
end;
function GetIPv4ReceivedPackets(Device: Byte): LongWord; stdcall;
asm
push ebx
mov eax, 76
mov ebx, $00010000
mov bl, 1
mov bh, Device
int $40
pop ebx
end;
function GetIPv4IP(Device: Byte): LongWord; stdcall;
asm
push ebx
mov eax, 76
mov ebx, $00010000
mov bl, 2
mov bh, Device
int $40
pop ebx
end;
function SetIPv4IP(Device: Byte; IP: LongWord): LongWord; stdcall;
asm
push ebx
mov eax, 76
mov ebx, $00010000
mov bl, 3
mov bh, Device
mov ecx, IP
int $40
pop ebx
end;
function GetIPv4DNS(Device: Byte): LongWord; stdcall;
asm
push ebx
mov eax, 76
mov ebx, $00010000
mov bl, 4
mov bh, Device
int $40
pop ebx
end;
function SetIPv4DNS(Device: Byte; DNS: LongWord): LongWord; stdcall;
asm
push ebx
mov eax, 76
mov ebx, $00010000
mov bl, 5
mov bh, Device
mov ecx, DNS
int $40
pop ebx
end;
function GetIPv4Subnet(Device: Byte): LongWord; stdcall;
asm
push ebx
mov eax, 76
mov ebx, $00010000
mov bl, 6
mov bh, Device
int $40
pop ebx
end;
function SetIPv4Subnet(Device: Byte; Subnet: LongWord): LongWord; stdcall;
asm
push ebx
mov eax, 76
mov ebx, $00010000
mov bl, 7
mov bh, Device
mov ecx, Subnet
int $40
pop ebx
end;
function GetIPv4Gateway(Device: Byte): LongWord; stdcall;
asm
push ebx
mov eax, 76
mov ebx, $00010000
mov bl, 8
mov bh, Device
int $40
pop ebx
end;
function SetIPv4Gateway(Device: Byte; Gateway: LongWord): LongWord; stdcall;
asm
push ebx
mov eax, 76
mov ebx, $00010000
mov bl, 9
mov bh, Device
mov ecx, Gateway
int $40
pop ebx
end;
function GetICMPSentPackets(Device: Byte): LongWord; stdcall;
asm
push ebx
mov eax, 76
mov ebx, $00020000
mov bl, 0
mov bh, Device
int $40
pop ebx
end;
function GetICMPReceivedPackets(Device: Byte): LongWord; stdcall;
asm
push ebx
mov eax, 76
mov ebx, $00020000
mov bl, 1
mov bh, Device
int $40
pop ebx
end;
function GetUDPSentPackets(Device: Byte): LongWord; stdcall;
asm
push ebx
mov eax, 76
mov ebx, $00030000
mov bl, 0
mov bh, Device
int $40
pop ebx
end;
function GetUDPReceivedPackets(Device: Byte): LongWord; stdcall;
asm
push ebx
mov eax, 76
mov ebx, $00030000
mov bl, 1
mov bh, Device
int $40
pop ebx
end;
function GetTCPSentPackets(Device: Byte): LongWord; stdcall;
asm
push ebx
mov eax, 76
mov ebx, $00040000
mov bl, 0
mov bh, Device
int $40
pop ebx
end;
function GetTCPReceivedPackets(Device: Byte): LongWord; stdcall;
asm
push ebx
mov eax, 76
mov ebx, $00040000
mov bl, 1
mov bh, Device
int $40
pop ebx
end;
function GetARPSentPackets(Device: Byte): LongWord; stdcall;
asm
push ebx
mov eax, 76
mov ebx, $00050000
mov bl, 0
mov bh, Device
int $40
pop ebx
end;
function GetARPReceivedPackets(Device: Byte): LongWord; stdcall;
asm
push ebx
mov eax, 76
mov ebx, $00050000
mov bl, 1
mov bh, Device
int $40
pop ebx
end;
function GetARPEntrys(Device: Byte): LongWord; stdcall;
asm
push ebx
mov eax, 76
mov ebx, $00050000
mov bl, 2
mov bh, Device
int $40
pop ebx
end;
function GetARPEntry(Device: Byte; Entry: LongWord; var Buffer): LongWord; stdcall;
asm
push ebx
push edi
mov eax, 76
mov ebx, $00050000
mov bl, 3
mov bh, Device
mov ecx, Entry
mov edi, Buffer
int $40
pop edi
pop ebx
end;
function AddARPEntry(Device: Byte; const Buffer): LongWord; stdcall;
asm
push ebx
push esi
mov eax, 76
mov ebx, $00050000
mov bl, 4
mov bh, Device
mov esi, Buffer
int $40
pop esi
pop ebx
end;
function RemoveARPEntry(Device: Byte; Entry: LongWord): LongWord; stdcall;
asm
push ebx
mov eax, 76
mov ebx, $00050000
mov bl, 5
mov bh, Device
mov ecx, Entry
int $40
pop ebx
end;
function SendARPAnnounce(Device: Byte): LongWord; stdcall;
asm
push ebx
mov eax, 76
mov ebx, $00050000
mov bl, 6
mov bh, Device
int $40
pop ebx
end;
function GetARPConflicts(Device: Byte): LongWord; stdcall;
asm
push ebx
mov eax, 76
mov ebx, $00050000
mov bl, 7
mov bh, Device
int $40
pop ebx
end;
function CreateFutex(Futex: Pointer): THandle; stdcall;
asm
push ebx
mov eax, 77
mov ebx, 0
mov ecx, Futex
int $40
pop ebx
end;
function DestroyFutex(Handle: THandle): LongInt; stdcall;
asm
push ebx
mov eax, 77
mov ebx, 1
mov ecx, Handle
int $40
pop ebx
end;
function WaitFutex(Handle: THandle; Value, Time: LongWord): LongInt; stdcall;
asm
push ebx
push esi
mov eax, 77
mov ebx, 2
mov ecx, Handle
mov edx, Value
mov esi, Time
int $40
pop esi
pop ebx
end;
function WakeFutex(Handle: THandle; Waiters: LongWord): LongWord; stdcall;
asm
push ebx
mov eax, 77
mov ebx, 3
mov ecx, Handle
mov edx, Waiters
int $40
pop ebx
end;
function GetProcAddress(hLib: Pointer; ProcName: PKolibriChar): Pointer; stdcall;
asm
push esi
push edi
push ebx
mov edx, hLib
xor eax, eax
test edx, edx
jz @end
mov edi, ProcName
mov ecx, $FFFFFFFF
repne scasb
mov ebx, ecx
not ebx
@next:
mov esi, [edx]
test esi, esi
jz @end
mov ecx, ebx
mov edi, ProcName
add edx, 8
repe cmpsb
jne @next
mov eax, [edx - 4]
@end:
pop ebx
pop edi
pop esi
end;
end.