Rev 1505 | Rev 1689 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1505 | Rev 1664 | ||
---|---|---|---|
Line 1... | Line -... | ||
1 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
- | |
2 | ;; ;; |
1 | ;; ;; |
3 | ;; Copyright (C) KolibriOS team 2004-2009. All rights reserved. ;; |
2 | ;; Copyright (C) KolibriOS team 2004-2009. All rights reserved. ;; |
4 | ;; Distributed under terms of the GNU General Public License ;; |
3 | ;; Distributed under terms of the GNU General Public License ;; |
5 | ;; ;; |
4 | ;; ;; |
6 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
5 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
Line 7... | Line 6... | ||
7 | 6 | ||
Line 8... | Line 7... | ||
8 | $Revision: 1491 $ |
7 | $Revision: 1664 $ |
9 | 8 | ||
Line 39... | Line 38... | ||
39 | dd fs_OnHd2 |
38 | dd fs_OnHd2 |
40 | dd fs_NextHd2 |
39 | dd fs_NextHd2 |
41 | db 3,'hd3' |
40 | db 3,'hd3' |
42 | dd fs_OnHd3 |
41 | dd fs_OnHd3 |
43 | dd fs_NextHd3 |
42 | dd fs_NextHd3 |
44 | ;********************************************** |
- | |
45 | db 3,'cd0' |
- | |
46 | dd fs_OnCd0 |
- | |
47 | dd fs_NextCd |
- | |
48 | db 3,'cd1' |
- | |
49 | dd fs_OnCd1 |
- | |
50 | dd fs_NextCd |
- | |
51 | db 3,'cd2' |
- | |
52 | dd fs_OnCd2 |
- | |
53 | dd fs_NextCd |
- | |
54 | db 3,'cd3' |
- | |
55 | dd fs_OnCd3 |
- | |
56 | dd fs_NextCd |
- | |
57 | ;*********************************************** |
- | |
58 | db 0 |
43 | db 0 |
Line 59... | Line 44... | ||
59 | 44 | ||
60 | 45 | ||
Line 69... | Line 54... | ||
69 | db 'hd1',0 |
54 | db 'hd1',0 |
70 | dd fs_HasHd2 |
55 | dd fs_HasHd2 |
71 | db 'hd2',0 |
56 | db 'hd2',0 |
72 | dd fs_HasHd3 |
57 | dd fs_HasHd3 |
73 | db 'hd3',0 |
58 | db 'hd3',0 |
74 | ;********************************************** |
- | |
75 | dd fs_HasCd0 |
- | |
76 | db 'cd0',0 |
- | |
77 | dd fs_HasCd1 |
- | |
78 | db 'cd1',0 |
- | |
79 | dd fs_HasCd2 |
- | |
80 | db 'cd2',0 |
- | |
81 | dd fs_HasCd3 |
- | |
82 | db 'cd3',0 |
- | |
83 | ;********************************************** |
- | |
84 | dd 0 |
59 | dd 0 |
Line 85... | Line 60... | ||
85 | 60 | ||
86 | fs_additional_handlers: |
61 | fs_additional_handlers: |
87 | dd biosdisk_handler, biosdisk_enum_root |
62 | dd biosdisk_handler, biosdisk_enum_root |
Line 165... | Line 140... | ||
165 | mov esi, [edi+4] |
140 | mov esi, [edi+4] |
166 | .maindir_noesi: |
141 | .maindir_noesi: |
167 | cmp dword [ebx], 1 |
142 | cmp dword [ebx], 1 |
168 | jnz .access_denied |
143 | jnz .access_denied |
169 | xor eax, eax |
144 | xor eax, eax |
170 | mov ebp, [ebx+12] ;количество блоков для считывания |
145 | mov ebp, [ebx+12] ;êîëè÷åñòâî áëîêîâ äëÿ ñ÷èòûâàíèÿ |
171 | mov edx, [ebx+16] ;куда записывать рузельтат |
146 | mov edx, [ebx+16] ;êóäà çàïèñûâàòü ðóçåëüòàò |
172 | ; add edx, std_application_base_address |
147 | ; add edx, std_application_base_address |
173 | push dword [ebx+4] ; first block |
148 | push dword [ebx+4] ; first block |
174 | mov ebx, [ebx+8] ; flags |
149 | mov ebx, [ebx+8] ; flags |
175 | ; ebx=flags, [esp]=first block, ebp=number of blocks, edx=return area, esi='Next' handler |
150 | ; ebx=flags, [esp]=first block, ebp=number of blocks, edx=return area, esi='Next' handler |
176 | mov edi, edx |
151 | mov edi, edx |
Line 569... | Line 544... | ||
569 | dd 0 |
544 | dd 0 |
570 | dd fs_HdDelete |
545 | dd fs_HdDelete |
571 | dd fs_HdCreateFolder |
546 | dd fs_HdCreateFolder |
572 | fs_NumHdServices = ($ - fs_HdServices)/4 |
547 | fs_NumHdServices = ($ - fs_HdServices)/4 |
Line 573... | Line -... | ||
573 | - | ||
574 | ;******************************************************* |
- | |
575 | fs_OnCd0: |
- | |
576 | call reserve_cd |
- | |
577 | mov [ChannelNumber],1 |
- | |
578 | mov [DiskNumber],0 |
- | |
579 | push 6 |
- | |
580 | push 1 |
- | |
581 | jmp fs_OnCd |
- | |
582 | fs_OnCd1: |
- | |
583 | call reserve_cd |
- | |
584 | mov [ChannelNumber],1 |
- | |
585 | mov [DiskNumber],1 |
- | |
586 | push 4 |
- | |
587 | push 2 |
- | |
588 | jmp fs_OnCd |
- | |
589 | fs_OnCd2: |
- | |
590 | call reserve_cd |
- | |
591 | mov [ChannelNumber],2 |
- | |
592 | mov [DiskNumber],0 |
- | |
593 | push 2 |
- | |
594 | push 3 |
- | |
595 | jmp fs_OnCd |
- | |
596 | fs_OnCd3: |
- | |
597 | call reserve_cd |
- | |
598 | mov [ChannelNumber],2 |
- | |
599 | mov [DiskNumber],1 |
- | |
600 | push 0 |
- | |
601 | push 4 |
- | |
602 | fs_OnCd: |
- | |
603 | call reserve_cd_channel |
- | |
604 | pop eax |
- | |
605 | mov [cdpos], eax |
- | |
606 | pop eax |
- | |
607 | cmp ecx, 0x100 |
- | |
608 | jae .nf |
- | |
609 | push ecx ebx |
- | |
610 | mov cl,al |
- | |
611 | mov bl,[DRIVE_DATA+1] |
- | |
612 | shr bl,cl |
- | |
613 | test bl,2 |
- | |
614 | pop ebx ecx |
- | |
615 | - | ||
616 | jnz @f |
- | |
617 | .nf: |
- | |
618 | call free_cd_channel |
- | |
619 | and [cd_status], 0 |
- | |
620 | mov dword [image_of_eax], 5 ; not found |
- | |
621 | ret |
- | |
622 | @@: |
- | |
623 | mov ecx, [ebx+12] |
- | |
624 | mov edx, [ebx+16] |
- | |
625 | ; add edx, std_application_base_address |
- | |
626 | mov eax, [ebx] |
- | |
627 | cmp eax,fs_NumCdServices |
- | |
628 | jae .not_impl |
- | |
629 | add ebx, 4 |
- | |
630 | call dword [fs_CdServices + eax*4] |
- | |
631 | call free_cd_channel |
- | |
632 | and [cd_status], 0 |
- | |
633 | mov [image_of_eax], eax |
- | |
634 | mov [image_of_ebx], ebx |
- | |
635 | ret |
- | |
636 | .not_impl: |
- | |
637 | call free_cd_channel |
- | |
638 | and [cd_status], 0 |
- | |
639 | mov dword [image_of_eax], 2 ; not implemented |
- | |
640 | ret |
- | |
641 | - | ||
642 | fs_CdServices: |
- | |
643 | dd fs_CdRead |
- | |
644 | dd fs_CdReadFolder |
- | |
645 | dd fs_NotImplemented |
- | |
646 | dd fs_NotImplemented |
- | |
647 | dd fs_NotImplemented |
- | |
648 | dd fs_CdGetFileInfo |
- | |
649 | dd fs_NotImplemented |
- | |
650 | dd 0 |
- | |
651 | dd fs_NotImplemented |
- | |
652 | dd fs_NotImplemented |
- | |
653 | fs_NumCdServices = ($ - fs_CdServices)/4 |
- | |
654 | - | ||
Line 655... | Line 548... | ||
655 | ;******************************************************* |
548 | |
656 | 549 | ||
657 | fs_HasRamdisk: |
550 | fs_HasRamdisk: |
Line 1139... | Line 1032... | ||
1139 | xor ebp, ebp |
1032 | xor ebp, ebp |
1140 | test esi, esi |
1033 | test esi, esi |
1141 | jz .ret.ok |
1034 | jz .ret.ok |
1142 | mov byte [edi-1], '/' |
1035 | mov byte [edi-1], '/' |
1143 | jmp .set_copy_cont |
1036 | jmp .set_copy_cont |
- | 1037 | ||
- | 1038 | ; =============== moved from fs/iso9660.inc |
|
- | 1039 | ||
- | 1040 | char_todown: |
|
- | 1041 | ; convert character to uppercase, using cp866 encoding |
|
- | 1042 | ; in: al=symbol |
|
- | 1043 | ; out: al=converted symbol |
|
- | 1044 | cmp al, 'A' |
|
- | 1045 | jb .ret |
|
- | 1046 | cmp al, 'Z' |
|
- | 1047 | jbe .az |
|
- | 1048 | cmp al, '' |
|
- | 1049 | jb .ret |
|
- | 1050 | cmp al, '' |
|
- | 1051 | jb .rus1 |
|
- | 1052 | cmp al, '' |
|
- | 1053 | ja .ret |
|
- | 1054 | ; 0x90-0x9F -> 0xE0-0xEF |
|
- | 1055 | add al, 'à'-'' |
|
- | 1056 | .ret: |
|
- | 1057 | ret |
|
- | 1058 | .rus1: |
|
- | 1059 | ; 0x80-0x8F -> 0xA0-0xAF |
|
- | 1060 | .az: |
|
- | 1061 | add al, 0x20 |
|
- | 1062 | ret |
|
- | 1063 | ||
- | 1064 | uni2ansi_char: |
|
- | 1065 | ; convert UNICODE character in al to ANSI character in ax, using cp866 encoding |
|
- | 1066 | ; in: ax=UNICODE character |
|
- | 1067 | ; out: al=converted ANSI character |
|
- | 1068 | cmp ax, 0x80 |
|
- | 1069 | jb .ascii |
|
- | 1070 | cmp ax, 0x401 |
|
- | 1071 | jz .yo1 |
|
- | 1072 | cmp ax, 0x451 |
|
- | 1073 | jz .yo2 |
|
- | 1074 | cmp ax, 0x410 |
|
- | 1075 | jb .unk |
|
- | 1076 | cmp ax, 0x440 |
|
- | 1077 | jb .rus1 |
|
- | 1078 | cmp ax, 0x450 |
|
- | 1079 | jb .rus2 |
|
- | 1080 | .unk: |
|
- | 1081 | mov al, '_' |
|
- | 1082 | jmp .doit |
|
- | 1083 | .yo1: |
|
- | 1084 | mov al, 'ð' |
|
- | 1085 | jmp .doit |
|
- | 1086 | .yo2: |
|
- | 1087 | mov al, 'ñ' |
|
- | 1088 | jmp .doit |
|
- | 1089 | .rus1: |
|
- | 1090 | ; 0x410-0x43F -> 0x80-0xAF |
|
- | 1091 | add al, 0x70 |
|
- | 1092 | jmp .doit |
|
- | 1093 | .rus2: |
|
- | 1094 | ; 0x440-0x44F -> 0xE0-0xEF |
|
- | 1095 | add al, 0xA0 |
|
- | 1096 | .ascii: |
|
- | 1097 | .doit: |
|
- | 1098 | ret |