Subversion Repositories Kolibri OS

Rev

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

Rev 3626 Rev 3725
Line 3... Line 3...
3
;; Copyright (C) KolibriOS team 2004-2011. All rights reserved. ;;
3
;; Copyright (C) KolibriOS team 2004-2011. All rights reserved. ;;
4
;; Distributed under terms of the GNU General Public License    ;;
4
;; Distributed under terms of the GNU General Public License    ;;
5
;;                                                              ;;
5
;;                                                              ;;
6
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
6
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Line 7... Line 7...
7
 
7
 
Line 8... Line 8...
8
$Revision: 3626 $
8
$Revision: 3725 $
9
 
9
 
10
ERROR_SUCCESS        = 0
10
ERROR_SUCCESS        = 0
11
ERROR_DISK_BASE      = 1
11
ERROR_DISK_BASE      = 1
Line 523... Line 523...
523
        dd      fs_FloppyCreateFolder
523
        dd      fs_FloppyCreateFolder
524
fs_NumFloppyServices = ($ - fs_FloppyServices)/4
524
fs_NumFloppyServices = ($ - fs_FloppyServices)/4
Line 525... Line 525...
525
 
525
 
526
fs_OnHd0:
526
fs_OnHd0:
-
 
527
        call    reserve_hd1
527
        call    reserve_hd1
528
        mov     eax, [hd_address_table]
528
        mov     [hdbase], 0x1F0
529
        mov     [hdbase], eax   ;0x1F0
529
        mov     [hdid], 0
530
        mov     [hdid], 0
530
        push    1
531
        push    1
531
        jmp     fs_OnHd
532
        jmp     fs_OnHd
532
fs_OnHd1:
533
fs_OnHd1:
-
 
534
        call    reserve_hd1
533
        call    reserve_hd1
535
        mov     eax, [hd_address_table]
534
        mov     [hdbase], 0x1F0
536
        mov     [hdbase], eax   ;0x1F0
535
        mov     [hdid], 0x10
537
        mov     [hdid], 0x10
536
        push    2
538
        push    2
537
        jmp     fs_OnHd
539
        jmp     fs_OnHd
538
fs_OnHd2:
540
fs_OnHd2:
-
 
541
        call    reserve_hd1
539
        call    reserve_hd1
542
        mov     eax, [hd_address_table+16]
540
        mov     [hdbase], 0x170
543
        mov     [hdbase], eax   ;0x170
541
        mov     [hdid], 0
544
        mov     [hdid], 0
542
        push    3
545
        push    3
543
        jmp     fs_OnHd
546
        jmp     fs_OnHd
544
fs_OnHd3:
547
fs_OnHd3:
-
 
548
        call    reserve_hd1
545
        call    reserve_hd1
549
        mov     eax, [hd_address_table+16]
546
        mov     [hdbase], 0x170
550
        mov     [hdbase], eax   ;0x170
547
        mov     [hdid], 0x10
551
        mov     [hdid], 0x10
548
        push    4
552
        push    4
549
fs_OnHd:
553
fs_OnHd:
550
        call    reserve_hd_channel
554
        call    reserve_hd_channel
Line 930... Line 934...
930
        jnz     @b
934
        jnz     @b
931
        pop     edx ecx
935
        pop     edx ecx
932
        pop     eax
936
        pop     eax
933
        inc     eax
937
        inc     eax
934
        ret
938
        ret
935
 
-
 
-
 
939
;-----------------------------------------------------------------------------
936
process_replace_file_name:
940
process_replace_file_name:
-
 
941
; in
-
 
942
; esi - path with filename(f.70)
-
 
943
;
-
 
944
; out
-
 
945
; ebp - full filename
-
 
946
        pushfd
-
 
947
        cli
937
        mov     ebp, [full_file_name_table]
948
        mov     ebp, [full_file_name_table]
938
        mov     edi, [full_file_name_table.size]
-
 
939
        dec     edi
-
 
940
        shl     edi, 7
-
 
941
        add     edi, ebp
949
        xor     edi, edi
942
.loop:
950
.loop:
943
        cmp     edi, ebp
951
        cmp     edi, [full_file_name_table.size]
944
        jb      .notfound
952
        jae     .notfound
945
        push    esi edi
953
        push    esi edi
-
 
954
        shl     edi, 7 ; edi*128
-
 
955
        add     edi, ebp
946
@@:
956
@@:
947
        cmp     byte [edi], 0
957
        cmp     byte [edi], 0 ; end of dir_name
948
        jz      .dest_done
958
        jz      .dest_done
949
        lodsb
959
        lodsb
950
        test    al, al
960
        test    al, al
951
        jz      .cont
961
        jz      .cont
952
        or      al, 20h
962
        or      al, 20h ; 32 - space char
953
        scasb
963
        scasb
954
        jz      @b
964
        jz      @b
955
        jmp     .cont
965
        jmp     .cont
956
.dest_done:
966
.dest_done:
957
        cmp     byte [esi], 0
967
        cmp     byte [esi], 0
Line 960... Line 970...
960
        jnz     .cont
970
        jnz     .cont
961
        inc     esi
971
        inc     esi
962
        jmp     .found
972
        jmp     .found
963
.cont:
973
.cont:
964
        pop     edi esi
974
        pop     edi esi
965
        sub     edi, 128
975
        inc     edi
966
        jmp     .loop
976
        jmp     .loop
967
.found:
977
.found:
968
        pop     edi eax
978
        pop     edi eax
-
 
979
        shl     edi, 7 ; edi*128
-
 
980
        add     edi, ebp
969
        mov     ebp, esi
981
        mov     ebp, esi
970
        cmp     byte [esi], 0
982
        cmp     byte [esi], 0
971
        lea     esi, [edi+64]
983
        lea     esi, [edi+64]
972
        jnz     .ret
984
        jnz     .ret
973
.notfound:
985
.notfound:
974
        xor     ebp, ebp
986
        xor     ebp, ebp
975
.ret:
987
.ret:
-
 
988
        popfd
976
        ret
989
        ret
-
 
990
;-----------------------------------------------------------------------------
-
 
991
uglobal
-
 
992
lock_flag_for_f30_3 rb 1
-
 
993
endg
Line 977... Line 994...
977
 
994
 
978
sys_current_directory:
995
sys_current_directory:
979
;       mov     esi, [current_slot]
996
;       mov     esi, [current_slot]
980
;       mov     esi, [esi+APPDATA.cur_dir]
997
;       mov     esi, [esi+APPDATA.cur_dir]
Line 986... Line 1003...
986
 
1003
 
987
        dec     ebx
1004
        dec     ebx
988
        jz      .set
1005
        jz      .set
989
        dec     ebx
1006
        dec     ebx
-
 
1007
        jz      .get
-
 
1008
        dec     ebx
990
        jz      .get
1009
        jz      .mount_additional_directory
-
 
1010
        ret
-
 
1011
 
-
 
1012
.mount_additional_directory:
-
 
1013
; sysfunction 30.2: [for app] eax=30,ebx=3,ecx->dir name+dir path (128)
-
 
1014
; for our code: nothing
-
 
1015
 
-
 
1016
; check lock of the function
-
 
1017
        cmp     [lock_flag_for_f30_3], 1
-
 
1018
        je      @f
-
 
1019
        
-
 
1020
        mov     esi, ecx
-
 
1021
        mov     edi, sysdir_name1
-
 
1022
; copying fake directory name
-
 
1023
        mov     ecx, 63
-
 
1024
        pushfd
-
 
1025
        cli
-
 
1026
        cld
-
 
1027
        rep movsb
-
 
1028
; terminator of name, in case if we get the inlet trash
-
 
1029
        inc     esi
-
 
1030
        xor     eax, eax
-
 
1031
        stosb
-
 
1032
; copying real directory path for mounting
-
 
1033
        mov     ecx, 63
-
 
1034
        rep movsb
-
 
1035
; terminator of name, in case if we get the inlet trash
-
 
1036
        xor     eax, eax
-
 
1037
        stosb
-
 
1038
; increase the pointer of inputs for procedure "process_replace_file_name"        
-
 
1039
        mov     [full_file_name_table.size], 2
-
 
1040
; block the ability to call f.30.3 because for one session is necessary
-
 
1041
; for us only once
-
 
1042
        mov     [lock_flag_for_f30_3], 1
-
 
1043
        popfd
-
 
1044
@@:
-
 
1045
        ret
991
        ret
1046
        
992
.get:
1047
.get:
993
; sysfunction 30.2: [for app] eax=30,ebx=2,ecx->buffer,edx=len
1048
; sysfunction 30.2: [for app] eax=30,ebx=2,ecx->buffer,edx=len
994
; for our code: ebx->buffer,ecx=len
1049
; for our code: ebx->buffer,ecx=len