Subversion Repositories Kolibri OS

Rev

Rev 616 | Rev 623 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
616 bw 1
{}
2
 
3
type
4
  TKosPoint = packed record
5
    X: Longint;
6
    Y: Longint;
7
  end;
8
 
9
  TKosRect = packed record
10
  case Integer of
11
    0: (Left, Top, Width, Height: Longint);
12
    1: (TopLeft, HeightWidth: TKosPoint);
13
  end;
14
 
15
{ User interface }
16
procedure kos_definewindow(x, y, w, h: Word; style: DWord = $23FFFFFF; header: DWord = $008899FF; clframe: DWord = $008899FF);
17
procedure kos_movewindow(x, y, w, h: DWord);
18
function kos_getkey(): DWord;
19
function kos_getevent(wait: Boolean = True): DWord;
20
function kos_waitevent(timeout: DWord): DWord;
21
function kos_getbutton(): DWord;
22
function kos_getmousepos(): TKosPoint;
23
function kos_getmousewinpos(): TKosPoint;
24
function kos_getmousebuttons(): DWord;
25
procedure kos_maskevents(mask: DWord);
26
procedure kos_setcaption(caption: PChar);
27
 
28
{ Graphics }
619 bw 29
function kos_screensize(): TKosPoint;
616 bw 30
procedure kos_begindraw();
31
procedure kos_enddraw();
32
procedure kos_putpixel(x, y: Word; color: DWord = $000000);
33
procedure kos_drawtext(x, y: Word; text: String; flags: DWord = $000000; bgcolor: DWord = $00FFFFFF);
34
procedure kos_drawrect(x, y, w, h: Word; color: DWord = $000000);
35
procedure kos_drawline(x1, y1, x2, y2: Word; color: DWord = $000000);
36
procedure kos_drawimage(x, y, w, h, depth: DWord; image: Pointer; palette: Pointer = nil; xoffset: DWord = 0);
37
procedure kos_drawimage24(x, y, w, h: DWord; image: Pointer);
38
 
39
{ Work with system }
40
 
41
{ Work with system - System services }
42
function kos_killthread(tid: TThreadID): Boolean;
43
procedure kos_setactivewindow(slot: TThreadSlot);
44
function kos_getthreadslot(tid: TThreadID): TThreadSlot;
45
 
46
{ Work with system - Set system parameters }
47
procedure kos_enablepci();
48
 
49
{ Work with system - Internal system services }
50
procedure kos_switchthread();
51
function kos_initheap(): DWord;
52
function kos_alloc(size: DWord): Pointer;
53
function kos_free(ptr: Pointer): Boolean;
54
function kos_loaddriver(name: PChar): THandle;
55
 
56
{ Processes and threads }
57
type
58
  PKosThreadInfo = ^TKosThreadInfo;
59
  TKosThreadInfo = packed record
60
    Speed: DWord;
61
    WindowID: Word;
62
    ThreadSlot: Word;
63
    Reserved1: Word;
64
    AppName: array[0..10] of Char;
65
    Reserved2: Byte;
66
    ProcessBase: Pointer;
67
    MemoryUsage: DWord;
68
    ThreadID: TThreadID;
69
    WindowRect: TKosRect;
70
    Unknown0: array[1..1066] of Byte;
71
  end;
72
 
73
  {Буфер IPC}
74
  PKosIPC = ^TKosIPC;
75
  TKosIPC = packed record
76
    Lock: LongBool;
77
    Size: DWord;
78
    {сообщение #1...}
79
    {сообщение #2...}
80
    {...}
81
  end;
82
 
83
  {Сообщение IPC}
84
  PKosMessage = ^TKosMessage;
85
  TKosMessage = packed record
86
    SenderID: TThreadID;
87
    Size: DWord;
88
    {тело сообщения...}
89
  end;
90
 
91
function kos_threadinfo(info: PKosThreadInfo; slot: TThreadSlot = -1): DWord;
92
function kos_newthread(entry, stack: Pointer): TThreadID;
93
procedure kos_initipc(ipc: PKosIPC; size: DWord);
94
function kos_sendmsg(tid: TThreadID; msg: Pointer; size: DWord): DWord;
95
function kos_resizemem(size: DWord): Boolean;
96
 
97
{ File system }
98
{ File system - Work with the current folder }
99
 
100
procedure kos_setdir(path: PChar);
101
function kos_getdir(path: PChar; size: DWord): DWord;
102
 
103
{ File system - Work with file system with long names support }
104
 
105
const
106
  kfReadOnly   = $01;
107
  kfHidden     = $02;
108
  kfSystem     = $04;
109
  kfLabel      = $08;
110
  kfFolder     = $10;
111
  kfNotArchive = $20;
112
 
113
type
114
  PKosFile = ^TKosFile;
115
  TKosFile = packed record
116
    SubFunc: DWord;
117
    Position, PositionReserved: DWord;
118
    Size: DWord;
119
    Data: Pointer;
120
    Name: array[0..0] of Char; {...ASCIIZ}
121
  end;
122
 
123
  PKosBDFE = ^TKosBDFE;
124
  TKosBDFE = packed record
125
    Attributes: DWord;
126
    NameType: Byte; {bit0 - 0:ascii, 1:unicode}
127
    Reserved: array[0..2] of Byte;
128
    CTime: DWord;  {ss,mm,hh,00}
129
    CDate: DWord;  {dd,mm,yyyy}
130
    ATime: DWord;
131
    ADate: DWord;
132
    MTime: DWord;
133
    MDate: DWord;
134
    Size: QWord;
135
    Name: array[0..519] of Char;
136
  end;
137
 
138
function kos_readfile(kosfile: PKosFile; var readed: Longint): DWord;
139
function kos_rewritefile(kosfile: PKosFile; var writed: Longint): DWord;
140
function kos_writefile(kosfile: PKosFile; var writed: Longint): DWord;
141
function kos_fileinfo(kosfile: PKosFile): DWord;
142
 
143
{ Work with hardware }
144
function kos_readport(index: DWord): DWord;
145
procedure kos_writeport(index, value: DWord);
146
function kos_reserveport(port: DWord): Boolean;
147
 
148
{ Work with hardware - Low-level access to PCI}
149
function kos_lastpcibus(): Byte;
150
function kos_readpcib(bus, dev, func, reg: Byte): Byte;
151
function kos_readpciw(bus, dev, func, reg: Byte): Word;
152
function kos_readpcid(bus, dev, func, reg: Byte): DWord;
153
 
154
{ Other }
155
procedure kos_delay(ms: DWord); {1/100 s}
156
 
157
{ my }
158
type
159
  TKosSign = array[0..7] of Byte;
160
  PKosHeader = ^TKosHeader;
161
  TKosHeader = packed record
162
    sign   : TKOSSign;
163
    version: DWord;
164
    start  : DWord;
165
    size   : DWord;
166
    memory : DWord;
167
    stack  : DWord;
168
    args   : PChar;
169
    path   : PChar;
170
  end;
171
 
172
 
173
type
174
  PKonsole = ^TKonsole;
175
  TKonsole = object
176
  private
177
    FCaption: String;
178
    FLines: array of String;
179
    FCursor: TKosPoint;
180
    FMaxLines: Word;
181
    FThreadID: TThreadID;
182
    FThreadSlot: TThreadSlot;
183
    FIPCBuffer: PKosIPC;
184
    FIPCBufferSize: DWord;
185
    FTerminate: Boolean;
186
    FOpened: Boolean;
187
    FKeyPressed: Word;
188
    function ReceiveMessage(var Message: ShortString): Boolean;
189
    procedure ProcessMessage(Message: ShortString);
190
    procedure ProcessKeyboard(Key: Word);
191
    function GetRect(): TKosRect;
192
    function GetKeyPressed(): Word;
193
    procedure Paint(BottomRow: Boolean = False);
194
  public
195
    constructor Init(ACaption: String = '');
196
    destructor Done();
197
    procedure Write(Message: ShortString);
198
    property KeyPressed: Word read GetKeyPressed;
199
    property Opened: Boolean read FOpened;
200
    property ThreadID: TThreadID read FThreadID;       {JustForFun, must be hidden, do not use}
201
    property ThreadSlot: TThreadSlot read FThreadSlot; {JustForFun, must be hidden, do not use}
202
  end;
203
 
204
  IStreamIO = interface
205
    function Read(Size: DWord = 0): AnsiString;
206
    procedure Write(Str: AnsiString; Error: Boolean = False);
207
  end;