Subversion Repositories Kolibri OS

Rev

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

  1.  
  2. lib_console_init:
  3.  
  4. ; load DLL
  5.         mov     eax, 68
  6.         mov     ebx, 19
  7.         mov     ecx, dll_name
  8.         int     0x40
  9.         test    eax, eax
  10.         jz      exit
  11.  
  12. ; initialize import
  13.         mov     edx, eax
  14.         mov     esi, myimport
  15. import_loop:
  16.         lodsd
  17.         test    eax, eax
  18.         jz      import_done
  19.         push    edx
  20. import_find:
  21.         mov     ebx, [edx]
  22.         test    ebx, ebx
  23.         jz      exit;import_not_found
  24.         push    eax
  25. @@:
  26.         mov     cl, [eax]
  27.         cmp     cl, [ebx]
  28.         jnz     import_find_next
  29.         test    cl, cl
  30.         jz      import_found
  31.         inc     eax
  32.         inc     ebx
  33.         jmp     @b
  34. import_find_next:
  35.         pop     eax
  36.         add     edx, 8
  37.         jmp     import_find
  38. import_found:
  39.         pop     eax
  40.         mov     eax, [edx+4]
  41.         mov     [esi-4], eax
  42.         pop     edx
  43.         jmp     import_loop
  44. import_done:
  45.  
  46. ret
  47.  
  48.  
  49. exit:
  50.         or      eax, -1
  51.         int     0x40
  52.  
  53.  
  54. new_line        db      13, 10, 0
  55. dll_name        db      '/sys/lib/console.obj',0
  56. caption         db      'Eliza for KolibriOS', 0
  57.  
  58.  
  59. align 4
  60. myimport:
  61. dll_start               dd      aStart
  62. dll_ver                 dd      aVersion
  63. con_init                dd      aConInit
  64. con_write_asciiz        dd      aConWriteAsciiz
  65. con_exit                dd      aConExit
  66. con_getch               dd      aCon_getch
  67. con_cls                 dd      aCon_cls
  68. con_set_cursor_pos      dd      aCon_set_cursor_pos
  69. con_gets                dd      aCon_gets
  70. con_printf              dd      aCon_printf
  71.                         dd      0
  72.  
  73. aStart                  db      'START',0
  74. aVersion                db      'version',0
  75. aConInit                db      'con_init',0
  76. aConWriteAsciiz         db      'con_write_asciiz',0
  77. aConExit                db      'con_exit',0
  78. aCon_getch              db      'con_getch',0
  79. aCon_cls                db      'con_cls',0
  80. aCon_set_cursor_pos     db      'con_set_cursor_pos',0
  81. aCon_gets               db      'con_gets',0
  82. aCon_printf             db      'con_printf',0
  83.  
  84.  
  85. buffer                  rb      1024