Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. #startaddress 0
  2. #code32 TRUE
  3.  
  4. char   os_name[8]   = {'M','E','N','U','E','T','0','1'};
  5. dword  os_version   = 0x00000001;
  6. dword  start_addr   = #main;
  7. dword  final_addr   = #stop+32;
  8. dword  alloc_mem    = 0x00100000;
  9. dword  x86esp_reg   = 0x0007fff0;
  10. dword  I_Param      = 0x0;
  11. dword  I_Icon       = 0x0;
  12.  
  13. //Events
  14. #define evButton  3
  15. #define evKey     2
  16. #define evReDraw  1
  17.  
  18. //Button options
  19. #define BT_DEL          0x80000000
  20. #define BT_HIDE         0x40000000
  21. #define BT_NOFRAME      0x20000000
  22.  
  23.  
  24. //------------------------------------------------------------------------------
  25. inline fastcall dword WaitEvent(){
  26.  EAX = 10;
  27.  $int 0x40
  28. }
  29.  
  30. inline fastcall void ExitProcess(){
  31.  EAX = -1;
  32.  $int 0x40
  33. }
  34.  
  35.  
  36. inline fastcall word GetKey(){
  37.  EAX = 2;
  38.  $int  0x40
  39.  EAX = EAX >> 8;
  40. }
  41.  
  42.  
  43. inline fastcall word GetButtonID(){
  44.  EAX = 17;
  45.  $int  0x40
  46.  EAX = EAX >> 8;
  47. }
  48.  
  49. //------------------------------------------------------------------------------
  50.  
  51.  
  52. void DefineAndDrawWindow(dword x,y,sizeX,sizeY,byte mainAreaType,dword
  53.         mainAreaColor,byte headerType,dword headerColor,EDI)
  54. {
  55.         EBX = x << 16 + sizeX;
  56.         ECX = y << 16 + sizeY;
  57.         EDX = mainAreaType << 24 | mainAreaColor;
  58.         ESI = headerType << 24 | headerColor;
  59.         $xor eax,eax
  60.         $int 0x40
  61. }
  62.  
  63. void WindowRedrawStatus(dword EBX)
  64. {
  65.         EAX = 12;
  66.         $int 0x40
  67. }
  68.  
  69.  
  70. inline fastcall dword GetSkinWidth(){
  71.         EAX = 48;
  72.         EBX = 4;
  73.         $int 0x40
  74. }
  75.  
  76.  
  77. void DefineButton(dword x,y,w,h,EDX,ESI){
  78.         EAX = 8;
  79.         EBX = x<<16+w;
  80.         ECX = y<<16+h;
  81.         $int 0x40
  82. }
  83.  
  84.  
  85. void WriteText(dword x,y,byte fontType, dword color, EDX, ESI)
  86. {
  87.         EAX = 4;
  88.         EBX = x<<16+y;
  89.         ECX = fontType<<24+color;
  90.         $int 0x40;
  91. }
  92.  
  93.  
  94. void DrawBar(dword x,y,w,h,EDX)
  95. {
  96.         EAX = 13;
  97.         EBX = x<<16+w;
  98.         ECX = y<<16+h;
  99.         $int 0x40
  100. }
  101.  
  102.  
  103. void DrawRegion(dword x,y,width,height,color1)
  104. {
  105.         DrawBar(x,y,width,1,color1); //ïîëîñà ãîð ñâåðõó
  106.         DrawBar(x,y+height,width,1,color1); //ïîëîñà ãîð ñíèçó
  107.         DrawBar(x,y,1,height,color1); //ïîëîñà âåðò ñëåâà
  108.         DrawBar(x+width,y,1,height+1,color1); //ïîëîñà âåðò ñïðàâà
  109. }
  110.  
  111. void DrawFlatButton(dword x,y,width,height,id,color)
  112. {
  113.         DrawRegion(x,y,width,height,0x94AECE);
  114.         DrawBar(x+1,y+1,width-1,1,0xFFFFFF); //ïîëîñà ãîð áåëàÿ
  115.         DrawBar(x+1,y+height-1,width-2,1,0xC7C7C7); //òåíü âåðò
  116.         DrawBar(x+1,y+1,1,height-1,0xFFFFFF); //ïîëîñà âåðò áåëàÿ
  117.         DrawBar(x+width-1,y+2,1,height-2,0xC7C7C7); //òåíü âåðò
  118.         DrawBar(x+2,y+2,width-3,height-3,color); //çàëèâêà
  119.         DefineButton(x,y,width,height,id+BT_HIDE,0xEFEBEF); //îïðåäåëÿåì êíîïêó
  120. }
  121.  
  122.  
  123. void PutImage(dword EBX,w,h,x,y, EDI)
  124. {
  125.         EAX = 65;
  126.         ECX = w<<16+h;
  127.         EDX = x<<16+y;
  128.         ESI = 8;
  129.         EBP = 0;
  130.         $int 0x40
  131. }  
  132.  
  133. void WriteNumber(dword x,y,byte fontType, dword color, count, ECX)
  134. {
  135.         EAX = 47;
  136.         EBX = count<<16;
  137.         EDX = x<<16+y;
  138.         ESI = fontType<<24+color;
  139.         $int 0x40;
  140. }  
  141.  
  142.  
  143. dword generator;  // random number generator - äëÿ ãåíåðàöèè ñëó÷àéíûõ ÷èñåë
  144. :int random(int max)
  145. // get pseudo-random number - ïîëó÷èòü ïñåâäîñëó÷àéíîå ÷èñëî
  146. {
  147.   $rdtsc        // eax & edx
  148.   $xor eax,edx
  149.   $not eax
  150.  
  151.   EBX = generator;
  152.   $ror ebx,3
  153.   $xor ebx,0xdeadbeef
  154.   EBX += EAX;
  155.   generator = EBX;
  156.  
  157.   EAX += EBX;
  158.   EAX = EAX % max;
  159. }      
  160.  
  161.  
  162.  
  163.