Subversion Repositories Kolibri OS

Rev

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

  1.  
  2. SECTION .text
  3.  
  4. [GLOBAL __start]
  5. extern go.kernel.Load
  6.  
  7. global go.os.Sleep
  8. global go.os.Event
  9. global go.os.GetButtonID
  10. global go.os.CreateButton
  11. global go.os.Exit
  12. global go.os.Redraw
  13. global go.os.Window
  14. global go.os.WriteText
  15. global go.os.GetTime
  16. global go.os.DrawLine
  17. global go.os.DrawBar
  18. global go.os.DebugOutHex
  19. global go.os.DebugOutChar
  20. global go.os.DebugOutStr
  21.  
  22. __start:
  23.   call  go.kernel.Load
  24.   ret
  25.  
  26. go.os.Sleep:
  27.     push ebp
  28.     mov ebp,esp
  29.         mov eax, 5
  30.         mov ebx, [ebp+8]
  31.         int 0x40
  32.     mov esp,ebp
  33.     pop ebp
  34.     ret
  35.  
  36.  
  37. go.os.Event:
  38.         push ebp
  39.     mov ebp,esp
  40.         mov eax, 10
  41.         int 0x40
  42.         mov esp,ebp
  43.     pop ebp
  44.         ret
  45.  
  46. go.os.GetButtonID:
  47.   mov   eax,17
  48.   int   0x40
  49.   test  al,al
  50.   jnz   .no_button
  51.   shr   eax,8
  52.   ret
  53. .no_button:
  54.   xor   eax,eax
  55.   dec   eax
  56.   ret
  57.  
  58. go.os.Exit:
  59.     push ebp
  60.     mov ebp,esp
  61.         mov eax, -1
  62.         int 0x40
  63.     mov esp,ebp
  64.     pop ebp
  65.     ret
  66.  
  67. go.os.Redraw:
  68.     push ebp
  69.     mov ebp,esp
  70.         mov eax, 12
  71.         mov ebx, [ebp+8]
  72.         int 0x40
  73.     mov esp,ebp
  74.     pop ebp
  75.     ret
  76.  
  77. go.os.Window:
  78.     push ebp
  79.     mov ebp,esp
  80.         mov ebx, [ebp+8]
  81.         shl ebx, 16
  82.         or ebx, [ebp+16]
  83.         mov ecx, [ebp+12]
  84.         shl ecx, 16
  85.         or ecx, [ebp+20]
  86.         mov edx, 0x14
  87.         shl edx, 24
  88.         or edx, 0xFFFFFF
  89.         mov esi, 0x808899ff
  90.         mov edi, [ebp+24]
  91.         xor eax, eax
  92.         int 0x40
  93.     mov esp,ebp
  94.     pop ebp
  95.     ret
  96.  
  97. go.os.WriteText:
  98.     mov eax,4
  99.     mov ebx,[esp+4]
  100.     shl ebx,16
  101.     mov bx,[esp+8]
  102.     mov ecx,[esp+12]
  103.     mov edx,[esp+16]
  104.     mov esi,[esp+20]
  105.     int 0x40
  106.     ret
  107.  
  108. go.os.DrawLine:  
  109.     push ebx
  110.     mov ebx,[esp+8]
  111.     shl ebx,16
  112.     mov bx,[esp+16]
  113.     mov ecx,[esp+12]
  114.     shl ecx,16
  115.     mov cx,[esp+20]
  116.     mov edx,[esp+24]
  117.     mov eax,38
  118.     int 0x40
  119.     pop ebx
  120.     ret
  121.  
  122. go.os.DrawBar:
  123.     push  ebx
  124.     mov   eax,13
  125.     mov   ebx,[esp+8]
  126.     shl   ebx,16
  127.     mov   bx,[esp+16]
  128.     mov   ecx,[esp+12]
  129.     shl   ecx,16
  130.     mov   cx,[esp+20]
  131.     mov   edx,[esp+24]
  132.     int   0x40
  133.     pop   ebx
  134.     ret
  135.  
  136. go.os.GetTime:
  137.     mov eax, 3
  138.     int 0x40
  139.     ret
  140.  
  141. go.os.DebugOutHex:
  142.     mov eax, [esp+4]
  143.     mov   edx, 8
  144.     .new_char:
  145.     rol   eax, 4
  146.     movzx ecx, al
  147.     and   cl,  0x0f
  148.     mov   cl,  [__hexdigits + ecx]
  149.     pushad
  150.     mov eax, 63
  151.     mov ebx, 1
  152.     int 0x40
  153.     popad
  154.     dec   edx
  155.     jnz   .new_char
  156.     ret
  157.  
  158. go.os.DebugOutChar:        
  159.    mov al, [esp+4]
  160.    pushf
  161.    pushad
  162.    mov  cl,al
  163.    mov  eax,63
  164.    mov  ebx,1
  165.    int  0x40
  166.    popad
  167.    popf
  168.    ret
  169.  
  170. go.os.DebugOutStr:
  171.    mov  edx,[esp+4]
  172.    mov  eax,63
  173.    mov  ebx,1
  174.  m2:
  175.    mov  cl, [edx]
  176.    test cl,cl
  177.    jz   m1
  178.    int  40h
  179.    inc  edx
  180.    jmp  m2
  181.  m1:
  182.    ret
  183.  
  184. go.os.CreateButton:
  185.   push  ebx
  186.   push  esi
  187.   mov   ebx,[esp+12]
  188.   shl   ebx,16
  189.   mov   bx,[esp+20]
  190.   mov   ecx,[esp+16]
  191.   shl   ecx,16
  192.   mov   cx,[esp+24]
  193.   mov   edx,[esp+28]
  194.   mov   esi,[esp+32]
  195.   mov   eax,8
  196.   int   0x40
  197.   pop   esi
  198.   pop   ebx
  199.   ret
  200.  
  201. SECTION .data
  202. __hexdigits:
  203.   db '0123456789ABCDEF'
  204.