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; |