Subversion Repositories Kolibri OS

Rev

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

  1. ; new application structure
  2. macro meos_app_start
  3.  {
  4.   use32
  5.   org 0x0
  6.  
  7.   db 'MENUET01'
  8.   dd 0x01
  9.   dd __start
  10.   dd __end
  11.   dd __memory
  12.   dd __stack
  13.  
  14.   if used __params & ~defined __params
  15.     dd __params
  16.   else
  17.     dd 0x0
  18.   end if
  19.  
  20.   dd 0x0
  21.  }
  22. MEOS_APP_START fix meos_app_start
  23.  
  24. macro code
  25.  {
  26.   __start:
  27.  }
  28. CODE fix code
  29.  
  30. macro data
  31.  {
  32.   __data:
  33.  }
  34. DATA fix data
  35.  
  36. macro udata
  37.  {
  38.   if used __params & ~defined __params
  39.     __params:
  40.       db 0
  41.     __end:
  42.       rb 255
  43.   else
  44.     __end:
  45.   end if
  46.   __udata:
  47.  }
  48. UDATA fix udata
  49.  
  50. macro meos_app_end
  51.  {
  52.   align 32
  53.   rb 2048
  54.   __stack:
  55.   __memory:
  56.  }
  57. MEOS_APP_END fix meos_app_end
  58.  
  59.  
  60.  
  61. ; language for programs
  62. lang fix ru ; ru en fr ge fi
  63. ;lang equ ru
  64.  
  65.  
  66. ; optimize the code for size
  67. macro add arg1,arg2
  68.  {
  69.    if arg1 in <eax,ebx,ecx,edx,esi,edi,ebp,esp>
  70.       if arg2 eqtype 0
  71.          if arg2 = 1
  72.             inc arg1
  73.          else
  74.             add arg1,arg2
  75.          end if
  76.       else
  77.          add arg1,arg2
  78.       end if
  79.    else
  80.       add arg1,arg2
  81.    end if
  82.  }
  83.  
  84. macro sub arg1,arg2
  85.  {
  86.    if arg2 eqtype 0
  87.       if arg2 = 1
  88.          dec arg1
  89.       else
  90.          sub arg1,arg2
  91.       end if
  92.    else
  93.       sub arg1,arg2
  94.    end if
  95.  }
  96.  
  97. macro mov arg1,arg2
  98.  {
  99.    if arg1 in <eax,ebx,ecx,edx,esi,edi,ebp,esp>
  100.       if arg2 eqtype 0
  101.          if arg2 = 0
  102.             xor arg1,arg1
  103.          else if arg2 = 1
  104.             xor arg1,arg1
  105.             inc arg1
  106.          else if arg2 = -1
  107.             or  arg1,-1
  108.          else if arg2 > -128 & arg2 < 128
  109.             push arg2
  110.             pop  arg1
  111.          else
  112.             mov  arg1,arg2
  113.          end if
  114.       else
  115.          mov arg1,arg2
  116.       end if
  117.    else
  118.       mov arg1,arg2
  119.    end if
  120.  }
  121.  
  122.  
  123. macro struct name
  124.  {
  125.   virtual at 0
  126.    name name
  127.    sizeof.#name = $ - name
  128.   end virtual
  129.  }
  130.  
  131. ; structures used in MeOS
  132. struc process_information
  133.  {
  134.   .cpu_usage               dd ?  ; +0
  135.   .window_stack_position   dw ?  ; +4
  136.   .window_stack_value      dw ?  ; +6
  137.   .not_used1               dw ?  ; +8
  138.   .process_name            rb 12 ; +10
  139.   .memory_start            dd ?  ; +22
  140.   .used_memory             dd ?  ; +26
  141.   .PID                     dd ?  ; +30
  142.   .x_start                 dd ?  ; +34
  143.   .y_start                 dd ?  ; +38
  144.   .x_size                  dd ?  ; +42
  145.   .y_size                  dd ?  ; +46
  146.   .slot_state              dw ?  ; +50
  147.   rb (1024-52)
  148.  }
  149. struct process_information
  150.  
  151. struc system_colors
  152.  {
  153.   .frame            dd ?
  154.   .grab             dd ?
  155.   .grab_button      dd ?
  156.   .grab_button_text dd ?
  157.   .grab_text        dd ?
  158.   .work             dd ?
  159.   .work_button      dd ?
  160.   .work_button_text dd ?
  161.   .work_text        dd ?
  162.   .work_graph       dd ?
  163.  }
  164. struct system_colors
  165.  
  166.  
  167. ; constants
  168.  
  169. ; events
  170. EV_IDLE        = 0
  171. EV_TIMER       = 0
  172. EV_REDRAW      = 1
  173. EV_KEY         = 2
  174. EV_BUTTON      = 3
  175. EV_EXIT        = 4
  176. EV_BACKGROUND  = 5
  177. EV_MOUSE       = 6
  178. EV_IPC         = 7
  179. EV_STACK       = 8
  180.  
  181. ; event mask bits for function 40
  182. EVM_REDRAW     =        1b
  183. EVM_KEY        =       10b
  184. EVM_BUTTON     =      100b
  185. EVM_EXIT       =     1000b
  186. EVM_BACKGROUND =    10000b
  187. EVM_MOUSE      =   100000b
  188. EVM_IPC        =  1000000b
  189. EVM_STACK      = 10000000b