Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 3442 → Rev 3539

/kernel/trunk/fs/fat12.inc
119,9 → 119,9
call read_flp_fat
cmp [FDC_Status], 0
jne fdc_status_error_3_1
mov [FDD_Track], 0; Öèëèíäð
mov [FDD_Head], 1; Ñòîðîíà
mov [FDD_Sector], 2; Ñåêòîð
mov [FDD_Track], 0; Цилиндр
mov [FDD_Head], 1; Сторона
mov [FDD_Sector], 2; Сектор
call SeekTrack
mov dh, 14
l.20_1:
253,9 → 253,9
jne unnecessary_root_read
cmp [root_read], 1
je unnecessary_root_read
mov [FDD_Track], 0; Öèëèíäð
mov [FDD_Head], 1; Ñòîðîíà
mov [FDD_Sector], 2; Ñåêòîð
mov [FDD_Track], 0; Цилиндр
mov [FDD_Head], 1; Сторона
mov [FDD_Sector], 2; Сектор
mov edi, FLOPPY_BUFF
call SeekTrack
read_flp_root_1:
282,9 → 282,9
jne unnecessary_flp_fat
cmp [flp_fat], 1
je unnecessary_flp_fat
mov [FDD_Track], 0; Öèëèíäð
mov [FDD_Head], 0; Ñòîðîíà
mov [FDD_Sector], 2; Ñåêòîð
mov [FDD_Track], 0; Цилиндр
mov [FDD_Head], 0; Сторона
mov [FDD_Sector], 2; Сектор
mov edi, FLOPPY_BUFF
call SeekTrack
read_flp_fat_1:
351,9 → 351,9
 
check_label:
pushad
mov [FDD_Track], 0; Öèëèíäð
mov [FDD_Head], 0; Ñòîðîíà
mov [FDD_Sector], 1; Ñåêòîð
mov [FDD_Track], 0; Цилиндр
mov [FDD_Head], 0; Сторона
mov [FDD_Sector], 1; Сектор
call SetUserInterrupts
call FDDMotorON
call RecalibrateFDD
392,9 → 392,9
jne unnecessary_root_save
cmp [root_read], 0
je unnecessary_root_save
mov [FDD_Track], 0; Öèëèíäð
mov [FDD_Head], 1; Ñòîðîíà
mov [FDD_Sector], 2; Ñåêòîð
mov [FDD_Track], 0; Цилиндр
mov [FDD_Head], 1; Сторона
mov [FDD_Sector], 2; Сектор
mov esi, FLOPPY_BUFF
call SeekTrack
save_flp_root_1:
421,9 → 421,9
cmp [flp_fat], 0
je unnecessary_flp_fat_save
call restorefatchain_flp
mov [FDD_Track], 0; Öèëèíäð
mov [FDD_Head], 0; Ñòîðîíà
mov [FDD_Sector], 2; Ñåêòîð
mov [FDD_Track], 0; Цилиндр
mov [FDD_Head], 0; Сторона
mov [FDD_Sector], 2; Сектор
mov esi, FLOPPY_BUFF
call SeekTrack
save_flp_fat_1:
/kernel/trunk/fs/fs.inc
441,7 → 441,7
fs_noharddisk:
; \begin{diamond}[18.03.2006]
mov eax, 5 ; file not found
; à ìîæåò áûòü, âîçâðàùàòü äðóãîé êîä îøèáêè?
; а может быть, возвращать другой код ошибки?
mov ebx, [esp+24+24]; do not change ebx in application
; \end{diamond}[18.03.2006]
 
713,14 → 713,14
;* output eax - number
;*******************************************
StringToNumber:
; ÏÅÐÅÂÎÄ ÑÒÐÎÊÎÂÎÃÎ ×ÈÑËÀ  ×ÈÑËÎÂÎÉ ÂÈÄ
; Âõîä:
; EDI - àäðåñ ñòðîêè ñ ÷èñëîì. Êîíåö ÷èñëà îòìå÷åí êîäîì 0Dh
; Âûõîä:
; CF - èíäèêàòîð îøèáîê:
; 0 - îøèáîê íåò;
; 1 - îøèáêà
; Åñëè CF=0, òî AX - ÷èñëî.
; ПЕРЕВОД СТРОКОВОГО ЧИСЛА В ЧИСЛОВОЙ ВИД
; Вход:
; EDI - адрес строки с числом. Конец числа отмечен кодом 0Dh
; Выход:
; CF - индикатор ошибок:
; 0 - ошибок нет;
; 1 - ошибка
; Если CF=0, то AX - число.
 
push bx
push cx
/kernel/trunk/fs/iso9660.inc
137,7 → 137,7
.l1:
push ecx edx
push 0
mov eax, [edi+10] ; ðåàëüíûé ðàçìåð ôàéëîâîé ñåêöèè
mov eax, [edi+10] ; реальный размер файловой секции
sub eax, ebx
jb .eof
cmp eax, ecx
159,7 → 159,7
jb .incomplete_sector
; we may read and memmove complete sector
mov [CDDataBuf_pointer], edx
call ReadCDWRetr; ÷èòàåì ñåêòîð ôàéëà
call ReadCDWRetr; читаем сектор файла
cmp [DevErrorCode], 0
jne .noaccess_3
add edx, 2048
170,7 → 170,7
.incomplete_sector:
; we must read and memmove incomplete sector
mov [CDDataBuf_pointer], CDDataBuf
call ReadCDWRetr; ÷èòàåì ñåêòîð ôàéëà
call ReadCDWRetr; читаем сектор файла
cmp [DevErrorCode], 0
jne .noaccess_3
push ecx
240,7 → 240,7
.found_dir:
mov eax, [edi+2] ; eax=cluster
mov [CDSectorAddress], eax
mov eax, [edi+10] ; ðàçìåð äèðåêòðîðèè
mov eax, [edi+10] ; размер директрории
.doit:
; init header
push eax ecx
252,7 → 252,7
mov byte [edx], 1 ; version
mov [cd_mem_location], edx
add [cd_mem_location], 32
; íà÷èíàåì ïåðåáðîñêó ÁÄÂÊ â ÓÑÂÊ
; начинаем переброску БДВК в УСВК
;.mainloop:
mov [cd_counter_block], dword 0
dec dword [CDSectorAddress]
260,12 → 260,12
.read_to_buffer:
inc dword [CDSectorAddress]
mov [CDDataBuf_pointer], CDDataBuf
call ReadCDWRetr ; ÷èòàåì ñåêòîð äèðåêòîðèè
call ReadCDWRetr ; читаем сектор директории
cmp [DevErrorCode], 0
jne .noaccess_1
call .get_names_from_buffer
sub eax, 2048
; äèðåêòîðèÿ çàêîí÷èëàñü?
; директория закончилась?
ja .read_to_buffer
mov edi, [cd_counter_block]
mov [edx+8], edi
310,17 → 310,17
call uni2ansi_char
cld
stosb
; ïðîâåðêà êîíöà ôàéëà
; проверка конца файла
mov ax, [esi]
cmp ax, word 3B00h; ñåïàðàòîð êîíöà ôàéëà ';'
cmp ax, word 3B00h; сепаратор конца файла ';'
je .cd_get_parameters_of_file_1
; ïðîâåðêà äëÿ ôàéëîâ íå çàêàí÷èâàþùèõñÿ ñåïàðàòîðîì
; проверка для файлов не заканчивающихся сепаратором
movzx eax, byte [ebp-33]
add eax, ebp
sub eax, 34
cmp esi, eax
je .cd_get_parameters_of_file_1
; ïðîâåðêà êîíöà ïàïêè
; проверка конца папки
movzx eax, byte [ebp-1]
add eax, ebp
cmp esi, eax
347,17 → 347,17
jbe .unicode_parent_directory
cld
movsw
; ïðîâåðêà êîíöà ôàéëà
; проверка конца файла
mov ax, [esi]
cmp ax, word 3B00h; ñåïàðàòîð êîíöà ôàéëà ';'
cmp ax, word 3B00h; сепаратор конца файла ';'
je .cd_get_parameters_of_file_2
; ïðîâåðêà äëÿ ôàéëîâ íå çàêàí÷èâàþùèõñÿ ñåïàðàòîðîì
; проверка для файлов не заканчивающихся сепаратором
movzx eax, byte [ebp-33]
add eax, ebp
sub eax, 34
cmp esi, eax
je .cd_get_parameters_of_file_2
; ïðîâåðêà êîíöà ïàïêè
; проверка конца папки
movzx eax, byte [ebp-1]
add eax, ebp
cmp esi, eax
386,60 → 386,60
cd_get_parameters_of_file:
mov edi, [cd_mem_location]
cd_get_parameters_of_file_1:
; ïîëó÷àåì àòðèáóòû ôàéëà
; получаем атрибуты файла
xor eax, eax
; ôàéë íå àðõèâèðîâàëñÿ
; файл не архивировался
inc eax
shl eax, 1
; ýòî êàòàëîã?
; это каталог?
test [ebp-8], byte 2
jz .file
inc eax
.file:
; ìåòêà òîìà íå êàê â FAT, â ýòîì âèäå îòñóòñâóåò
; ôàéë íå ÿâëÿåòñÿ ñèñòåìíûì
; метка тома не как в FAT, в этом виде отсутсвует
; файл не является системным
shl eax, 3
; ôàéë ÿâëÿåòñÿ ñêðûòûì? (àòðèáóò ñóùåñòâîâàíèå)
; файл является скрытым? (атрибут существование)
test [ebp-8], byte 1
jz .hidden
inc eax
.hidden:
shl eax, 1
; ôàéë âñåãäà òîëüêî äëÿ ÷òåíèÿ, òàê êàê ýòî CD
; файл всегда только для чтения, так как это CD
inc eax
mov [edi], eax
; ïîëó÷àåì âðåìÿ äëÿ ôàéëà
;÷àñ
; получаем время для файла
;час
movzx eax, byte [ebp-12]
shl eax, 8
;ìèíóòà
;минута
mov al, [ebp-11]
shl eax, 8
;ñåêóíäà
;секунда
mov al, [ebp-10]
;âðåìÿ ñîçäàíèÿ ôàéëà
;время создания файла
mov [edi+8], eax
;âðåìÿ ïîñëåäíåãî äîñòóïà
;время последнего доступа
mov [edi+16], eax
;âðåìÿ ïîñëåäíåé çàïèñè
;время последней записи
mov [edi+24], eax
; ïîëó÷àåì äàòó äëÿ ôàéëà
;ãîä
; получаем дату для файла
;год
movzx eax, byte [ebp-15]
add eax, 1900
shl eax, 8
;ìåñÿö
;месяц
mov al, [ebp-14]
shl eax, 8
;äåíü
;день
mov al, [ebp-13]
;äàòà ñîçäàíèÿ ôàéëà
;дата создания файла
mov [edi+12], eax
;âðåìÿ ïîñëåäíåãî äîñòóïà
;время последнего доступа
mov [edi+20], eax
;âðåìÿ ïîñëåäíåé çàïèñè
;время последней записи
mov [edi+28], eax
; ïîëó÷àåì òèï äàííûõ èìåíè
; получаем тип данных имени
xor eax, eax
test dword [ebx+4], 1; 0=ANSI, 1=UNICODE
jnz .unicode_1
449,7 → 449,7
inc eax
mov [edi+4], eax
@@:
; ïîëó÷àåì ðàçìåð ôàéëà â áàéòàõ
; получаем размер файла в байтах
xor eax, eax
mov [edi+32+4], eax
mov eax, [ebp-23]
503,7 → 503,7
; out: CF=1 - file not found
; else CF=0 and [cd_current_pointer_of_input] direntry
push eax esi
; 16 ñåêòîð íà÷àëî íàáîðà äåñêðèïòîðîâ òîìîâ
; 16 сектор начало набора дескрипторов томов
 
call WaitUnitReady
cmp [DevErrorCode], 0
510,7 → 510,7
jne .access_denied
 
call prevent_medium_removal
; òåñòîâîå ÷òåíèå
; тестовое чтение
mov [CDSectorAddress], dword 16
mov [CDDataBuf_pointer], CDDataBuf
call ReadCDWRetr;_1
517,7 → 517,7
cmp [DevErrorCode], 0
jne .access_denied
 
; âû÷èñëåíèå ïîñëåäíåé ñåññèè
; вычисление последней сессии
call WaitUnitReady
cmp [DevErrorCode], 0
jne .access_denied
539,37 → 539,37
jne .access_denied
 
.start_check:
; ïðîâåðêà íà âøèâîñòü
; проверка на вшивость
cmp [CDDataBuf+1], dword 'CD00'
jne .access_denied
cmp [CDDataBuf+5], byte '1'
jne .access_denied
; ñåêòîð ÿâëÿåòñÿ òåðìèíàòîðîì íàáîð äåñêðèïòîðîâ òîìîâ?
; сектор является терминатором набор дескрипторов томов?
cmp [CDDataBuf], byte 0xff
je .access_denied
; ñåêòîð ÿâëÿåòñÿ äîïîëíèòåëüíûì è óëó÷øåííûì äåñêðèïòîðîì òîìà?
; сектор является дополнительным и улучшенным дескриптором тома?
cmp [CDDataBuf], byte 0x2
jne .start
; ñåêòîð ÿâëÿåòñÿ äîïîëíèòåëüíûì äåñêðèïòîðîì òîìà?
; сектор является дополнительным дескриптором тома?
cmp [CDDataBuf+6], byte 0x1
jne .start
 
; ïàðàìåòðû root äèðåêòðîðèè
mov eax, [CDDataBuf+0x9c+2]; íà÷àëî root äèðåêòðîðèè
; параметры root директрории
mov eax, [CDDataBuf+0x9c+2]; начало root директрории
mov [CDSectorAddress], eax
mov eax, [CDDataBuf+0x9c+10]; ðàçìåð root äèðåêòðîðèè
mov eax, [CDDataBuf+0x9c+10]; размер root директрории
cmp byte [esi], 0
jnz @f
mov [cd_current_pointer_of_input], CDDataBuf+0x9c
jmp .done
@@:
; íà÷èíàåì ïîèñê
; начинаем поиск
.mainloop:
dec dword [CDSectorAddress]
.read_to_buffer:
inc dword [CDSectorAddress]
mov [CDDataBuf_pointer], CDDataBuf
call ReadCDWRetr ; ÷èòàåì ñåêòîð äèðåêòîðèè
call ReadCDWRetr ; читаем сектор директории
cmp [DevErrorCode], 0
jne .access_denied
push ebp
577,27 → 577,27
pop ebp
jnc .found
sub eax, 2048
; äèðåêòîðèÿ çàêîí÷èëàñü?
; директория закончилась?
cmp eax, 0
ja .read_to_buffer
; íåò èñêîìîãî ýëåìåíòà öåïî÷êè
; нет искомого элемента цепочки
.access_denied:
pop esi eax
mov [cd_appl_data], 1
stc
ret
; èñêîìûé ýëåìåíò öåïî÷êè íàéäåí
; искомый элемент цепочки найден
.found:
; êîíåö ïóòè ôàéëà
; конец пути файла
cmp byte [esi-1], 0
jz .done
.nested:
mov eax, [cd_current_pointer_of_input]
push dword [eax+2]
pop dword [CDSectorAddress] ; íà÷àëî äèðåêòîðèè
mov eax, [eax+2+8]; ðàçìåð äèðåêòîðèè
pop dword [CDSectorAddress] ; начало директории
mov eax, [eax+2+8]; размер директории
jmp .mainloop
; óêàçàòåëü ôàéëà íàéäåí
; указатель файла найден
.done:
test ebp, ebp
jz @f
629,13 → 629,13
mov ebp, [cd_current_pointer_of_input_2]
mov [cd_current_pointer_of_input], ebp
mov eax, [ebp]
test eax, eax ; âõîäû çàêîí÷èëèñü?
test eax, eax ; входы закончились?
jz .next_sector
cmp ebp, CDDataBuf+2048 ; áóôåð çàêîí÷èëñÿ?
cmp ebp, CDDataBuf+2048 ; буфер закончился?
jae .next_sector
movzx eax, byte [ebp]
add [cd_current_pointer_of_input_2], eax; ñëåäóþùèé âõîä êàòàëîãà
add ebp, 33; óêàçàòåëü óñòàíîâëåí íà íà÷àëî èìåíè
add [cd_current_pointer_of_input_2], eax; следующий вход каталога
add ebp, 33; указатель установлен на начало имени
pop eax
clc
ret
669,9 → 669,9
scasw
jne .name_not_coincide
.coincides:
cmp [esi], byte '/'; ðàçäåëèòåëü ïóòè, êîíåö èìåíè òåêóùåãî ýëåìåíòà
cmp [esi], byte '/'; разделитель пути, конец имени текущего элемента
je .done
cmp [esi], byte 0; ðàçäåëèòåëü ïóòè, êîíåö èìåíè òåêóùåãî ýëåìåíòà
cmp [esi], byte 0; разделитель пути, конец имени текущего элемента
je .done
jmp .loop
.name_not_coincide:
679,16 → 679,16
stc
ret
.done:
; ïðîâåðêà êîíöà ôàéëà
cmp [edi], word 3B00h; ñåïàðàòîð êîíöà ôàéëà ';'
; проверка конца файла
cmp [edi], word 3B00h; сепаратор конца файла ';'
je .done_1
; ïðîâåðêà äëÿ ôàéëîâ íå çàêàí÷èâàþùèõñÿ ñåïàðàòîðîì
; проверка для файлов не заканчивающихся сепаратором
movzx eax, byte [ebp-33]
add eax, ebp
sub eax, 34
cmp edi, eax
je .done_1
; ïðîâåðêà êîíöà ïàïêè
; проверка конца папки
movzx eax, byte [ebp-1]
add eax, ebp
cmp edi, eax
708,14 → 708,14
jb .ret
cmp al, 'Z'
jbe .az
cmp al, '€'
cmp al, 0x80 ; 'А'
jb .ret
cmp al, ''
cmp al, 0x90 ; 'Р'
jb .rus1
cmp al, 'Ÿ'
cmp al, 0x9F ; 'Я'
ja .ret
; 0x90-0x9F -> 0xE0-0xEF
add al, 'à'-''
add al, 0xE0-0x90
.ret:
ret
.rus1:
744,10 → 744,10
mov al, '_'
jmp .doit
.yo1:
mov al, 'ð'
mov al, 0xF0 ; 'Ё' in cp866
jmp .doit
.yo2:
mov al, 'ñ'
mov al, 0xF1 ; 'ё' in cp866
jmp .doit
.rus1:
; 0x410-0x43F -> 0x80-0xAF
/kernel/trunk/fs/part_set.inc
77,10 → 77,10
.inode_size dd ?
.count_pointer_in_block dd ? ; block_size / 4
.count_pointer_in_block_square dd ? ; (block_size / 4)**2
.ext2_save_block dd ? ; ¡«®ª ­  £«®¡ «ì­ãî 1 ¯à®æ¥¤ãàã
.ext2_temp_block dd ? ; ¡«®ª ¤«ï ¬¥«ª¨å ¯à®æ¥¤ãà
.ext2_save_inode dd ? ; inode ­  £«®¡ «ì­ãî ¯à®æ¥¤ãàã
.ext2_temp_inode dd ? ; inode ¤«ï ¬¥«ª¨å ¯à®æ¥¤ãà
.ext2_save_block dd ? ; блок на глобальную 1 процедуру
.ext2_temp_block dd ? ; блок для мелких процедур
.ext2_save_inode dd ? ; inode на глобальную процедуру
.ext2_temp_inode dd ? ; inode для мелких процедур
.sb dd ? ; superblock
.groups_count dd ?
if $ > fs_dependent_data_end
278,7 → 278,7
;pop edx
 
test_ext_partition_0:
pop eax ; ¯à®áâ® ¢ëª¨¤ë¢ ¥¬ ¨§ á⥪ 
pop eax ; просто выкидываем из стека
mov al, [ebx+0x1be+4]; get extended partition type
call scan_extended_types
jnz test_ext_partition_1
368,7 → 368,7
 
; mov edx, [PARTITION_END]
; sub edx, eax
; inc edx ; edx = length of partition § ç¥¬ ®­® ­ ¬??
; inc edx ; edx = length of partition зачем оно нам??
 
; mov [hd_setup],1
mov ebx, buffer