Subversion Repositories Kolibri OS

Rev

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

  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 }
  29. function kos_screensize(): TKosPoint;
  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;
  208.