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 |