Subversion Repositories Kolibri OS

Rev

Rev 345 | Rev 357 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 345 Rev 346
Line 296... Line 296...
296
 
296
 
Line 297... Line 297...
297
           mov edx, [edx+SRV.fd]
297
           mov edx, [edx+SRV.fd]
298
           jmp @B
298
           jmp @B
299
.not_load:
299
.not_load:
300
           stdcall find_service, [sz_name]
-
 
301
           test eax, eax
-
 
302
           jz @F
300
           pop ebp
303
           stdcall load_driver, eax
301
           jmp load_driver
304
@@:
-
 
305
           ret
-
 
306
.ok:
302
.ok:
307
           mov eax, edx
303
           mov eax, edx
308
           ret
304
           ret
309
endp
305
endp
Line 310... Line 306...
310
 
306
 
311
align 4
-
 
312
proc find_service stdcall ,sz_name:dword
-
 
313
 
-
 
314
	   mov eax, [sz_name]
-
 
315
	   test eax, eax
-
 
316
	   jz .fail
-
 
317
 
-
 
318
           mov esi, services
-
 
319
@@:
-
 
320
           mov eax, [esi]
-
 
321
           test eax, eax
-
 
322
           jz .fail
-
 
323
           push esi
-
 
324
           stdcall strncmp, eax, [sz_name], 16
-
 
325
           pop esi
-
 
326
           test eax, eax
-
 
327
           je .ok
-
 
328
 
-
 
329
           add esi, 8
-
 
330
           jmp @B
-
 
331
.ok:
-
 
332
           mov eax, [esi+4]
-
 
333
           ret
-
 
334
.fail:
-
 
335
           xor eax, eax
-
 
336
           ret
-
 
337
endp
-
 
338
 
-
 
339
align 4
307
align 4
340
reg_service:
308
reg_service:
341
.sz_name equ esp+4
309
.sz_name equ esp+4
342
.handler equ esp+8
310
.handler equ esp+8
343
           mov eax, [.sz_name]
311
           mov eax, [.sz_name]
Line 703... Line 671...
703
	   ret
671
	   ret
704
endp
672
endp
705
 
673
 
Line 706... Line 674...
706
align 4
674
align 4
707
proc load_driver stdcall, file_name:dword
675
proc load_driver stdcall, driver_name:dword
708
           locals
676
           locals
709
             coff      dd ?
677
             coff      dd ?
710
             sym       dd ?
678
             sym       dd ?
711
             strings   dd ?
679
             strings   dd ?
712
             img_size  dd ?
680
             img_size  dd ?
713
             img_base  dd ?
681
             img_base  dd ?
714
             start     dd ?
682
             start     dd ?
Line 715... Line 683...
715
 
683
 
716
             exports   dd ?   ;fake exports table
684
             exports   dd ?   ;fake exports table
-
 
685
                       dd ?
717
                       dd ?
686
             file_name rb 14+16+4+1      ; '/rd/1/drivers/.obj'
Line -... Line 687...
-
 
687
           endl
-
 
688
 
-
 
689
        lea     edx, [file_name]
-
 
690
        mov     dword [edx], '/rd/'
-
 
691
        mov     dword [edx+4], '1/dr'
-
 
692
        mov     dword [edx+8], 'iver'
-
 
693
        mov     word [edx+12], 's/'
-
 
694
        mov     esi, [driver_name]
-
 
695
        lea     edi, [edx+14]
-
 
696
        mov     ecx, 16
-
 
697
@@:
-
 
698
        lodsb
-
 
699
        test    al, al
-
 
700
        jz      @f
-
 
701
        stosb
-
 
702
        loop    @b
-
 
703
@@:
718
           endl
704
        mov     dword [edi], '.obj'
Line 719... Line 705...
719
 
705
        mov     byte [edi+4], 0
720
           stdcall load_file, [file_name]
706
           stdcall load_file, edx
Line 721... Line 707...
721
 
707
 
Line 833... Line 819...
833
 
819
 
Line 834... Line 820...
834
.ver_fail:
820
.ver_fail:
835
           mov esi, msg_CR
821
           mov esi, msg_CR
836
           call sys_msg_board_str
822
           call sys_msg_board_str
837
           mov esi, [file_name]
823
           mov esi, [driver_name]
838
           call sys_msg_board_str
824
           call sys_msg_board_str
839
           mov esi, msg_CR
825
           mov esi, msg_CR
840
           call sys_msg_board_str
826
           call sys_msg_board_str
841
           mov esi, msg_version
827
           mov esi, msg_version
842
           call sys_msg_board_str
828
           call sys_msg_board_str
Line 846... Line 832...
846
 
832
 
Line 847... Line 833...
847
.link_fail:
833
.link_fail:
848
           mov esi, msg_module
834
           mov esi, msg_module
849
           call sys_msg_board_str
835
           call sys_msg_board_str
850
           mov esi, [file_name]
836
           mov esi, [driver_name]
851
           call sys_msg_board_str
837
           call sys_msg_board_str
852
           mov esi, msg_CR
838
           mov esi, msg_CR
853
           call sys_msg_board_str
839
           call sys_msg_board_str
854
.cleanup:
840
.cleanup:
855
           stdcall kernel_free,[img_base]
841
           stdcall kernel_free,[img_base]
Line 1039... Line 1025...
1039
           call free           ;release object memory
1025
           call free           ;release object memory
1040
           ret
1026
           ret
Line 1041... Line -...
1041
 
-
 
1042
 
-
 
1043
drv_sound      db '/rd/1/drivers/unisound.obj', 0
-
 
1044
drv_infinity   db '/rd/1/drivers/infinity.obj', 0
-
 
1045
drv_hw_mouse   db '/rd/1/drivers/ati2d.obj',0
1027
 
1046
 
1028
 
1047
szSound        db 'SOUND',0
1029
;szSound        db 'SOUND',0
Line 1048... Line 1030...
1048
szInfinity     db 'INFINITY',0
1030
;szInfinity     db 'INFINITY',0
1049
szHwMouse      db 'HWCURSOR',0
1031
szHwMouse      db 'ATI2D',0
1050
 
1032
 
Line 1061... Line 1043...
1061
align 4
1043
align 4
1062
create_cursor    dd 0
1044
create_cursor    dd 0
1063
set_hw_cursor    dd 0
1045
set_hw_cursor    dd 0
1064
hw_restore       dd 0
1046
hw_restore       dd 0
1065
 
-
 
1066
align 16
-
 
1067
services:
-
 
1068
           dd szSound,    drv_sound
-
 
1069
           dd szInfinity, drv_infinity
-
 
1070
           dd szHwMouse,  drv_hw_mouse
-
 
1071
           dd 0
-