Subversion Repositories Kolibri OS

Rev

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

Rev 221 Rev 227
Line 1... Line 1...
1
DRV_ENTRY equ 1
1
DRV_ENTRY    equ  1
2
DRV_EXIT  equ -1
2
DRV_EXIT     equ -1
-
 
3
DRV_COMPAT   equ  1  ;minimal required drivers version
-
 
4
DRV_CURRENT  equ  1  ;current drivers model version
-
 
5
 
-
 
6
DRV_VERSION equ (DRV_COMPAT shl 16) or DRV_CURRENT
Line 3... Line 7...
3
 
7
 
4
align 4
8
align 4
Line 5... Line 9...
5
proc attach_int_handler stdcall, irq:dword, handler:dword
9
proc attach_int_handler stdcall, irq:dword, handler:dword
Line 702... Line 706...
702
 
706
 
Line 703... Line 707...
703
           stdcall load_file, [file_name]
707
           stdcall load_file, [file_name]
Line 704... Line 708...
704
 
708
 
705
           test eax, eax
709
           test eax, eax
Line 706... Line 710...
706
           jz .fail
710
           jz .exit
Line 707... Line 711...
707
 
711
 
708
           mov [coff], eax
712
           mov [coff], eax
Line 773... Line 777...
773
 
777
 
Line 774... Line 778...
774
           stdcall fix_coff_symbols, eax, [sym], [edx+CFH.nSymbols],\
778
           stdcall fix_coff_symbols, eax, [sym], [edx+CFH.nSymbols],\
775
                                     [strings], ebx
779
                                     [strings], ebx
776
           test eax, eax
780
           test eax, eax
777
           jnz @F
-
 
778
 
-
 
779
           mov esi, msg_module
-
 
780
           call sys_msg_board_str
-
 
781
           mov esi, [file_name]
-
 
782
           call sys_msg_board_str
-
 
783
           mov esi, msg_CR
781
           jz .link_fail
784
           call sys_msg_board_str
-
 
Line 785... Line -...
785
 
-
 
786
           stdcall kernel_free,[coff]
-
 
787
           xor eax, eax
-
 
788
           ret
-
 
789
@@:
782
 
790
           mov ebx, [coff]
783
           mov ebx, [coff]
791
           add ebx, 20
784
           add ebx, 20
Line 792... Line 785...
792
           stdcall fix_coff_relocs, [coff], ebx, [sym]
785
           stdcall fix_coff_relocs, [coff], ebx, [sym]
-
 
786
 
-
 
787
           mov ebx, [coff]
-
 
788
           stdcall get_coff_sym,[sym],[ebx+CFH.nSymbols],szVersion
-
 
789
           test eax, eax
-
 
790
           jz .link_fail
-
 
791
 
-
 
792
           mov eax, [eax]
-
 
793
           shr eax, 16
-
 
794
           cmp eax, DRV_COMPAT
-
 
795
           jb .ver_fail
-
 
796
 
-
 
797
           cmp eax, DRV_CURRENT
-
 
798
           ja .ver_fail
793
 
799
 
794
           mov ebx, [coff]
800
           mov ebx, [coff]
Line 795... Line 801...
795
           stdcall get_coff_sym,[sym],[ebx+CFH.nSymbols],szSTART
801
           stdcall get_coff_sym,[sym],[ebx+CFH.nSymbols],szSTART
Line 810... Line 816...
810
           mov [eax+SRV.base], ebx
816
           mov [eax+SRV.base], ebx
811
           mov ecx, [start]
817
           mov ecx, [start]
812
           mov [eax+SRV.entry], ecx
818
           mov [eax+SRV.entry], ecx
813
           ret
819
           ret
814
.fail:
820
 
-
 
821
.ver_fail:
-
 
822
           mov esi, msg_CR
-
 
823
           call sys_msg_board_str
-
 
824
           mov esi, [file_name]
-
 
825
           call sys_msg_board_str
-
 
826
           mov esi, msg_CR
-
 
827
           call sys_msg_board_str
-
 
828
           mov esi, msg_version
-
 
829
           call sys_msg_board_str
-
 
830
           mov esi, msg_www
-
 
831
           call sys_msg_board_str
-
 
832
           jmp .cleanup
-
 
833
 
-
 
834
.link_fail:
-
 
835
           mov esi, msg_module
-
 
836
           call sys_msg_board_str
-
 
837
           mov esi, [file_name]
-
 
838
           call sys_msg_board_str
-
 
839
           mov esi, msg_CR
-
 
840
           call sys_msg_board_str
-
 
841
.cleanup:
-
 
842
           stdcall kernel_free,[img_base]
-
 
843
.fail:
815
           xor eax, eax
844
           stdcall kernel_free, [coff]
-
 
845
.exit:
-
 
846
           xor eax, eax
816
           ret
847
           ret
817
endp
848
endp
818
 
849
 
Line 819... Line 850...
819
align 4
850
align 4
Line 922... Line 953...
922
endp
953
endp
923
 
954
 
Line 924... Line 955...
924
align 4
955
align 4
925
proc stop_all_services
956
proc stop_all_services
926
           pushf
-
 
927
           cli
-
 
928
           mov eax, [srv_map]
957
           not [srv_map]
929
           not eax
-
 
930
           mov [srv_map], eax
-
 
931
.next:
958
.next:
932
           bsf eax, [srv_map]
959
           bsf eax, [srv_map]
933
           jnz .find
960
           jnz .find
934
           popf
-
 
935
           ret
961
           ret
936
.find:
962
.find:
937
           btr [srv_map], eax
963
           btr [srv_map], eax
938
           shl eax,0x02
964
           shl eax,0x02
939
           lea eax,[srv_tab+eax+eax*8]   ;srv_tab+eax*36
965
           lea eax,[srv_tab+eax+eax*8]   ;srv_tab+eax*36
-
 
966
           cmp [eax+SRV.magic], ' SRV'
-
 
967
           jne .next
-
 
968
           cmp [eax+SRV.size], SRV_SIZE
-
 
969
           jne .next
940
           mov ebx, [eax+SRV.entry]
970
           mov ebx, [eax+SRV.entry]
941
           stdcall ebx, dword -1
971
           stdcall ebx, dword -1
942
           jmp .next
972
           jmp .next
943
endp
973
endp
Line 944... Line 974...
944
 
974
 
945
 
975
 
946
drv_sound      db '/rd/1/drivers/unisound.obj', 0
-
 
947
drv_infinity   db '/rd/1/drivers/infinity.obj', 0
976
drv_sound      db '/rd/1/drivers/unisound.obj', 0
Line 948... Line 977...
948
;drv_ati2d      db '/rd/1/drivers/vesa.obj', 0
977
drv_infinity   db '/rd/1/drivers/infinity.obj', 0
949
;drv_cursor     db '/rd/1/drivers/vesa.obj',0
978
drv_hw_mouse   db '/rd/1/drivers/ati2d.obj',0
950
 
979
 
951
szSound        db 'SOUND',0
-
 
Line 952... Line 980...
952
szInfinity     db 'INFINITY',0
980
szSound        db 'SOUND',0
953
;szHMouse       db 'ATI2D',0
981
szInfinity     db 'INFINITY',0
954
;szCURSOR       db 'VESACURSOR',0
982
szHwMouse      db 'HWCURSOR',0
Line 955... Line 983...
955
 
983
 
956
szSTART        db 'START',0
984
szSTART        db 'START',0
-
 
985
szEXPORTS      db 'EXPORTS',0
-
 
986
szIMPORTS      db 'IMPORTS',0
957
szEXPORTS      db 'EXPORTS',0
987
 
Line 958... Line 988...
958
szIMPORTS      db 'IMPORTS',0
988
msg_unresolved db 'unresolved ',0
-
 
989
msg_module     db 'in module ',0
959
 
990
msg_version    db 'incompatible driver version',13,10,0
960
msg_unresolved db 'unresolved ',0
991
msg_www        db 'please visit www.kolibrios.org',13,10,0
Line 961... Line 992...
961
msg_module     db 'in module ',0
992
msg_CR         db  13,10,0
962
msg_CR         db  13,10,0
993
 
963
 
994
align 4
964
align 4
995
create_cursor    dd 0
965
set_hw_cursor    dd 0
996
set_hw_cursor    dd 0
966
hw_restore       dd 0
-
 
967
 
997
hw_restore       dd 0