forked from KolibriOS/kolibrios
Deleted obsolete sysfunction 58.1
git-svn-id: svn://kolibrios.org@495 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
ba74e7f00f
commit
a469f3f7e8
@ -43,33 +43,6 @@ reserve_flp:
|
|||||||
sti
|
sti
|
||||||
ret
|
ret
|
||||||
|
|
||||||
floppy_free_space:
|
|
||||||
;---------------------------------------------
|
|
||||||
;
|
|
||||||
; returns free space in edi
|
|
||||||
;
|
|
||||||
;---------------------------------------------
|
|
||||||
push eax ebx ecx
|
|
||||||
call read_flp_fat
|
|
||||||
cmp [FDC_Status],0
|
|
||||||
jne fdc_status_error_2
|
|
||||||
mov eax,0x282004
|
|
||||||
xor edi,edi
|
|
||||||
mov ecx,2847 ;1448000/512
|
|
||||||
rdfs1_1:
|
|
||||||
mov ebx,[eax]
|
|
||||||
and ebx,4095
|
|
||||||
jne rdfs2_1
|
|
||||||
add edi,512
|
|
||||||
rdfs2_1:
|
|
||||||
add eax,2
|
|
||||||
loop rdfs1_1
|
|
||||||
fdc_status_error_2:
|
|
||||||
pop ecx ebx eax
|
|
||||||
ret
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
floppy_fileread:
|
floppy_fileread:
|
||||||
;----------------------------------------------------------------
|
;----------------------------------------------------------------
|
||||||
@ -506,321 +479,6 @@ restorefatchain_flp: ; restore fat chain
|
|||||||
ret
|
ret
|
||||||
|
|
||||||
|
|
||||||
floppy_filedelete:
|
|
||||||
;--------------------------------------------
|
|
||||||
;
|
|
||||||
; filedelete - sys floppy
|
|
||||||
; in:
|
|
||||||
; eax - filename 11 chars - for root directory
|
|
||||||
; edi pointer to path /fd/1/...... - for all files in nested directories
|
|
||||||
;
|
|
||||||
; out:
|
|
||||||
; eax - 0 = successful, 1 = file not found, 10 = access denied
|
|
||||||
;
|
|
||||||
;--------------------------------------------
|
|
||||||
mov [path_pointer_flp],edi
|
|
||||||
mov [save_flag],0
|
|
||||||
mov ebp,1 ; file not found as default
|
|
||||||
filedelete_newtry_1:
|
|
||||||
sub esp,32
|
|
||||||
call expand_filename
|
|
||||||
push eax ebx ecx edx esi edi
|
|
||||||
call read_flp_fat
|
|
||||||
cmp [FDC_Status],0
|
|
||||||
jne frnoreadd_1
|
|
||||||
mov [FDD_Track],0 ; Öèëèíäð
|
|
||||||
mov [FDD_Head],1 ; Ñòîðîíà
|
|
||||||
mov [FDD_Sector],2 ; Ñåêòîð
|
|
||||||
call SeekTrack
|
|
||||||
mov dh,14
|
|
||||||
l.20_2:
|
|
||||||
call ReadSectWithRetr
|
|
||||||
cmp [FDC_Status],0
|
|
||||||
jne fdc_status_error_4
|
|
||||||
mov dl,16
|
|
||||||
mov edi,FDD_BUFF
|
|
||||||
inc [FDD_Sector]
|
|
||||||
l.21_2:
|
|
||||||
mov esi,eax ;Name of file we want
|
|
||||||
mov ecx,11
|
|
||||||
cld
|
|
||||||
rep cmpsb ;Found the file?
|
|
||||||
je fifoundd_1 ;Yes
|
|
||||||
add ecx,21
|
|
||||||
add edi, ecx ;Advance to next entry
|
|
||||||
dec dl
|
|
||||||
jne l.21_2
|
|
||||||
dec dh
|
|
||||||
jne l.20_2
|
|
||||||
jmp frnoreadd_1
|
|
||||||
|
|
||||||
fdc_status_error_4:
|
|
||||||
pop edi esi edx ecx ebx eax
|
|
||||||
add esp,32
|
|
||||||
jmp fdc_status_error_1
|
|
||||||
|
|
||||||
fifoundd_1:
|
|
||||||
mov eax,[path_pointer_flp]
|
|
||||||
cmp [eax+36],byte 0
|
|
||||||
je fifoundd_2
|
|
||||||
movzx eax, word [edi+0xf]
|
|
||||||
mov ebx,[path_pointer_flp]
|
|
||||||
add ebx,36
|
|
||||||
call get_cluster_of_a_path_flp
|
|
||||||
jc frnoreadd_1_1
|
|
||||||
mov edi,ebx
|
|
||||||
add edi,11
|
|
||||||
jmp fifoundd_2_1
|
|
||||||
fifoundd_2:
|
|
||||||
dec [FDD_Sector]
|
|
||||||
fifoundd_2_1:
|
|
||||||
mov [edi-11],byte 0xE5 ;mark filename deleted
|
|
||||||
movzx edi, word [edi+0xf] ;edi = cluster
|
|
||||||
frnewd_1:
|
|
||||||
shl edi,1 ;find next cluster from FAT
|
|
||||||
add edi,FLOPPY_FAT
|
|
||||||
mov eax,[edi]
|
|
||||||
mov [edi],word 0x0 ;clear fat chain cluster
|
|
||||||
and eax,4095
|
|
||||||
mov edi,eax
|
|
||||||
cmp edi,dword 4095 ;last cluster ?
|
|
||||||
jz frnoreadd2_1
|
|
||||||
jmp frnewd_1
|
|
||||||
|
|
||||||
frnoreadd2_1:
|
|
||||||
call WriteSectWithRetr
|
|
||||||
cmp [FDC_Status],0
|
|
||||||
jne fdc_status_error_4
|
|
||||||
call save_flp_fat
|
|
||||||
cmp [FDC_Status],0
|
|
||||||
jne fdc_status_error_4
|
|
||||||
; pop edi esi edx ecx ebx eax
|
|
||||||
; add esp,32
|
|
||||||
mov ebp,0 ; file found
|
|
||||||
; jmp filedelete_newtry_1
|
|
||||||
jmp frnoreadd_1
|
|
||||||
|
|
||||||
frnoreadd_1_1:
|
|
||||||
cmp [FDC_Status],0
|
|
||||||
jne fdc_status_error_4
|
|
||||||
frnoreadd_1:
|
|
||||||
pop edi esi edx ecx ebx eax
|
|
||||||
add esp,32
|
|
||||||
mov eax,ebp
|
|
||||||
ret
|
|
||||||
|
|
||||||
floppy_filesave:
|
|
||||||
;----------------------------------------------------------
|
|
||||||
;
|
|
||||||
; filesave - sys floppy
|
|
||||||
;
|
|
||||||
; eax ; pointer to file name 11 chars - for root directory
|
|
||||||
; ebx ; buffer
|
|
||||||
; ecx ; count to write in bytes
|
|
||||||
; edx ; 0 create new , 1 append
|
|
||||||
; edi pointer to path /fd/1/...... - for all files in nested directories
|
|
||||||
;
|
|
||||||
; output : eax = 0 - ok
|
|
||||||
; 5 - file not found / directory not found
|
|
||||||
; 8 - disk full
|
|
||||||
; 10 - access denied
|
|
||||||
;-----------------------------------------------------------
|
|
||||||
mov [path_pointer_flp],edi
|
|
||||||
sub esp,32
|
|
||||||
call expand_filename
|
|
||||||
cmp edx,0
|
|
||||||
jnz fsdel_1
|
|
||||||
pusha
|
|
||||||
call floppy_filedelete
|
|
||||||
cmp [FDC_Status],0
|
|
||||||
jne fdc_status_error_6
|
|
||||||
popa
|
|
||||||
mov [save_flag],1
|
|
||||||
fsdel_1:
|
|
||||||
call floppy_free_space
|
|
||||||
cmp [FDC_Status],0
|
|
||||||
jne fdc_status_error_6
|
|
||||||
cmp ecx,edi
|
|
||||||
jb rd_do_save_1
|
|
||||||
add esp,32
|
|
||||||
mov eax,8 ; not enough free space
|
|
||||||
mov [flp_status],0
|
|
||||||
ret
|
|
||||||
|
|
||||||
fdc_status_error_6:
|
|
||||||
popa
|
|
||||||
add esp,32
|
|
||||||
jmp fdc_status_error_1
|
|
||||||
|
|
||||||
rd_do_save_1:
|
|
||||||
push eax ebx ecx edx esi edi
|
|
||||||
call read_flp_fat
|
|
||||||
cmp [FDC_Status],0
|
|
||||||
jne fdc_status_error_7
|
|
||||||
push eax
|
|
||||||
mov eax,[path_pointer_flp]
|
|
||||||
cmp [eax+36],byte 0
|
|
||||||
jne fifoundds_2
|
|
||||||
pop eax
|
|
||||||
mov [save_root_flag],1
|
|
||||||
call read_flp_root
|
|
||||||
cmp [FDC_Status],0
|
|
||||||
jne fdc_status_error_7
|
|
||||||
mov edi,FLOPPY_BUFF ;Point at directory
|
|
||||||
mov edx,224 +1
|
|
||||||
; find an empty spot for filename in the root dir
|
|
||||||
l20ds_1:
|
|
||||||
sub edx,1
|
|
||||||
jz frnoreadds_1
|
|
||||||
l21ds_1:
|
|
||||||
cmp [edi],byte 0xE5
|
|
||||||
jz fifoundds_1
|
|
||||||
cmp [edi],byte 0x0
|
|
||||||
jz fifoundds_1
|
|
||||||
add edi,32 ; Advance to next entry
|
|
||||||
jmp l20ds_1
|
|
||||||
|
|
||||||
fifoundds_2:
|
|
||||||
pop eax
|
|
||||||
mov [save_root_flag],0
|
|
||||||
mov [FDD_Track],0 ; Öèëèíäð
|
|
||||||
mov [FDD_Head],1 ; Ñòîðîíà
|
|
||||||
mov [FDD_Sector],2 ; Ñåêòîð
|
|
||||||
call SeekTrack
|
|
||||||
mov dh,14
|
|
||||||
l.20_3:
|
|
||||||
call ReadSectWithRetr
|
|
||||||
cmp [FDC_Status],0
|
|
||||||
jne fdc_status_error_7
|
|
||||||
mov dl,16
|
|
||||||
mov edi,FDD_BUFF
|
|
||||||
inc [FDD_Sector]
|
|
||||||
l.21_3:
|
|
||||||
mov esi,eax ;Name of file we want
|
|
||||||
mov ecx,11
|
|
||||||
cld
|
|
||||||
rep cmpsb ;Found the file?
|
|
||||||
je fifoundds_3 ;Yes
|
|
||||||
add ecx,21
|
|
||||||
add edi, ecx ;Advance to next entry
|
|
||||||
dec dl
|
|
||||||
jne l.21_3
|
|
||||||
dec dh
|
|
||||||
jne l.20_3
|
|
||||||
fdc_status_error_8:
|
|
||||||
pop edi esi edx ecx ebx eax
|
|
||||||
mov eax,5 ; file not found ?
|
|
||||||
mov ebx,-1
|
|
||||||
add esp,32
|
|
||||||
mov [flp_status],0
|
|
||||||
ret
|
|
||||||
|
|
||||||
fifoundds_3:
|
|
||||||
add edi,0xf
|
|
||||||
mov eax,[edi]
|
|
||||||
and eax,65535
|
|
||||||
mov ebx,[path_pointer_flp]
|
|
||||||
add ebx,36
|
|
||||||
call get_cluster_of_a_path_flp
|
|
||||||
jc fdc_status_error_7_1
|
|
||||||
found_directory_for_writing_flp:
|
|
||||||
call analyze_directory_to_write_flp
|
|
||||||
jc fdc_status_error_7_1
|
|
||||||
mov edi,ebx
|
|
||||||
fifoundds_1:
|
|
||||||
push edi ; move the filename to root dir
|
|
||||||
mov esi,[esp+4+20]
|
|
||||||
cmp [save_root_flag],0
|
|
||||||
jne fifoundds_4
|
|
||||||
mov esi,[pointer_file_name_flp]
|
|
||||||
fifoundds_4:
|
|
||||||
mov ecx,11
|
|
||||||
cld
|
|
||||||
rep movsb
|
|
||||||
pop edi
|
|
||||||
mov edx,edi
|
|
||||||
add edx,11+0xf ; edx <- cluster save position
|
|
||||||
mov ebx,[esp+12] ; save file size
|
|
||||||
mov [edi+28],ebx
|
|
||||||
mov [edi+11],byte 0x20 ; attribute
|
|
||||||
call get_date_for_file ; from FAT32.INC
|
|
||||||
mov [edi+24],ax ; date
|
|
||||||
mov [edi+18],ax ; date
|
|
||||||
call get_time_for_file ; from FAT32.INC
|
|
||||||
mov [edi+22],ax ; time
|
|
||||||
xor ax,ax
|
|
||||||
mov [edi+20],ax
|
|
||||||
mov ebx,1 ; first cluster
|
|
||||||
cmp [save_root_flag],0
|
|
||||||
jne frnewds_1
|
|
||||||
call frnewds_2
|
|
||||||
pusha
|
|
||||||
call WriteSectWithRetr
|
|
||||||
popa
|
|
||||||
cmp [FDC_Status],0
|
|
||||||
jne fdc_status_error_7
|
|
||||||
jmp frnewds_3
|
|
||||||
|
|
||||||
frnewds_1:
|
|
||||||
call frnewds_2
|
|
||||||
frnewds_3:
|
|
||||||
pusha ; move save to floppy cluster
|
|
||||||
add ebx,31
|
|
||||||
mov eax,ebx
|
|
||||||
mov esi,[esp+32+16]
|
|
||||||
call take_data_from_application_1
|
|
||||||
call save_chs_sector
|
|
||||||
cmp [FDC_Status],0
|
|
||||||
jne fdc_status_error_7
|
|
||||||
popa
|
|
||||||
mov eax,[esp+12]
|
|
||||||
cmp eax,512
|
|
||||||
jb flnsa_1
|
|
||||||
sub eax,512
|
|
||||||
mov [esp+12],eax
|
|
||||||
mov eax,[esp+16]
|
|
||||||
add eax,512
|
|
||||||
mov [esp+16],eax
|
|
||||||
jmp frnewds_1
|
|
||||||
|
|
||||||
frnewds_2:
|
|
||||||
add ebx,1
|
|
||||||
mov edi,ebx ; find free cluster in FAT
|
|
||||||
shl edi,1
|
|
||||||
add edi,FLOPPY_FAT
|
|
||||||
mov eax,[edi]
|
|
||||||
and eax,4095
|
|
||||||
jnz frnewds_2
|
|
||||||
mov [edx],bx ; save next cluster pos. to prev cl.
|
|
||||||
mov edx,edi ; next save pos abs mem add
|
|
||||||
ret
|
|
||||||
|
|
||||||
flnsa_1:
|
|
||||||
mov [edi],word 4095 ; mark end of file - last cluster
|
|
||||||
cmp [save_root_flag],1
|
|
||||||
jne flnsa_2
|
|
||||||
call save_flp_root
|
|
||||||
cmp [FDC_Status],0
|
|
||||||
jne fdc_status_error_7
|
|
||||||
flnsa_2:
|
|
||||||
call save_flp_fat
|
|
||||||
cmp [FDC_Status],0
|
|
||||||
jne fdc_status_error_7
|
|
||||||
frnoreadds_1:
|
|
||||||
pop edi esi edx ecx ebx eax
|
|
||||||
add esp,32
|
|
||||||
mov eax,0
|
|
||||||
mov [flp_status],0
|
|
||||||
ret
|
|
||||||
|
|
||||||
fdc_status_error_7_1:
|
|
||||||
cmp [FDC_Status],0
|
|
||||||
je fdc_status_error_8
|
|
||||||
fdc_status_error_7:
|
|
||||||
pop edi esi edx ecx ebx eax
|
|
||||||
add esp,32
|
|
||||||
jmp fdc_status_error_1
|
|
||||||
|
|
||||||
save_chs_sector:
|
save_chs_sector:
|
||||||
call calculate_chs
|
call calculate_chs
|
||||||
call WriteSectWithRetr
|
call WriteSectWithRetr
|
||||||
@ -965,115 +623,6 @@ found_file_analyze_flp:
|
|||||||
ret
|
ret
|
||||||
|
|
||||||
|
|
||||||
analyze_directory_to_write_flp:
|
|
||||||
;--------------------------------
|
|
||||||
; input : EAX = first cluster of the directory
|
|
||||||
; output : IF CARRY=0 EAX = sector where the file is found
|
|
||||||
; EBX = pointer in buffer
|
|
||||||
; [buffer .. buffer+511]
|
|
||||||
; ECX,EDX,EDI,EDI not changed
|
|
||||||
; IF CARRY=1
|
|
||||||
;--------------------------------
|
|
||||||
|
|
||||||
push ecx
|
|
||||||
push edx
|
|
||||||
push esi
|
|
||||||
|
|
||||||
adr561:
|
|
||||||
mov [clust_tmp_flp],eax
|
|
||||||
add eax,31
|
|
||||||
pusha
|
|
||||||
call read_chs_sector
|
|
||||||
popa
|
|
||||||
cmp [FDC_Status],0
|
|
||||||
jne error_found_file_analyze1
|
|
||||||
|
|
||||||
mov ecx,512/32
|
|
||||||
mov ebx,FDD_BUFF
|
|
||||||
|
|
||||||
adr1_analyze1:
|
|
||||||
cmp byte [ebx],0x00
|
|
||||||
je found_file_analyze1
|
|
||||||
cmp byte [ebx],0xe5
|
|
||||||
je found_file_analyze1
|
|
||||||
|
|
||||||
avanti:
|
|
||||||
add ebx,32
|
|
||||||
loop adr1_analyze1
|
|
||||||
|
|
||||||
mov eax,[clust_tmp_flp]
|
|
||||||
shl eax,1 ;find next cluster from FAT
|
|
||||||
add eax,FLOPPY_FAT
|
|
||||||
mov eax,[eax]
|
|
||||||
and eax,4095
|
|
||||||
cmp eax,0x0ff8
|
|
||||||
jb adr561
|
|
||||||
|
|
||||||
call get_free_FAT ;this block of code add a new cluster
|
|
||||||
;for the directory because the directory
|
|
||||||
;is full
|
|
||||||
|
|
||||||
mov [edi],word 0x0fff
|
|
||||||
|
|
||||||
mov eax,[clust_tmp_flp]
|
|
||||||
shl eax,1 ;find next cluster from FAT
|
|
||||||
add eax,FLOPPY_FAT
|
|
||||||
sub edi,FLOPPY_FAT
|
|
||||||
mov [eax],di
|
|
||||||
|
|
||||||
pusha
|
|
||||||
mov ecx,512/4
|
|
||||||
xor eax,eax
|
|
||||||
mov edi,FDD_BUFF
|
|
||||||
cld
|
|
||||||
rep stosd
|
|
||||||
popa
|
|
||||||
|
|
||||||
mov eax,edi
|
|
||||||
add eax,31
|
|
||||||
pusha
|
|
||||||
call save_chs_sector
|
|
||||||
popa
|
|
||||||
cmp [FDC_Status],0
|
|
||||||
jne error_found_file_analyze1
|
|
||||||
mov ebx,FDD_BUFF
|
|
||||||
|
|
||||||
found_file_analyze1:
|
|
||||||
|
|
||||||
pop esi
|
|
||||||
pop edx
|
|
||||||
pop ecx
|
|
||||||
clc ;file found
|
|
||||||
ret
|
|
||||||
|
|
||||||
error_found_file_analyze1:
|
|
||||||
pop esi
|
|
||||||
pop edx
|
|
||||||
pop ecx
|
|
||||||
stc
|
|
||||||
ret
|
|
||||||
|
|
||||||
get_free_FAT_flp:
|
|
||||||
;------------------------------------------
|
|
||||||
; input : EAX = # cluster for start the searching
|
|
||||||
; output : EAX = # first cluster found free
|
|
||||||
;-------------------------------------------
|
|
||||||
push ebx
|
|
||||||
|
|
||||||
mov ebx,1
|
|
||||||
check_new_flp:
|
|
||||||
add ebx,1
|
|
||||||
mov edi,ebx ; find free cluster in FAT
|
|
||||||
shl edi,1
|
|
||||||
add edi,FLOPPY_FAT
|
|
||||||
mov eax,[edi]
|
|
||||||
and eax,4095
|
|
||||||
cmp eax,0x0
|
|
||||||
jnz check_new_flp
|
|
||||||
|
|
||||||
pop ebx
|
|
||||||
ret
|
|
||||||
|
|
||||||
; \begin{diamond}
|
; \begin{diamond}
|
||||||
fat_find_lfn:
|
fat_find_lfn:
|
||||||
; in: esi->name
|
; in: esi->name
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
$Revision$
|
$Revision$
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
;; ;;
|
;; ;;
|
||||||
;; Copyright (C) KolibriOS team 2004-2007. All rights reserved. ;;
|
;; Copyright (C) KolibriOS team 2004-2007. All rights reserved. ;;
|
||||||
;; Distributed under terms of the GNU General Public License ;;
|
;; Distributed under terms of the GNU General Public License ;;
|
||||||
@ -69,7 +69,6 @@ PUSHAD_EDI equ [esp+0]
|
|||||||
|
|
||||||
uglobal
|
uglobal
|
||||||
align 4
|
align 4
|
||||||
cluster dd 0 ; used by file_write,makedir,append
|
|
||||||
partition_count dd 0 ; partitions found by set_FAT32_variables
|
partition_count dd 0 ; partitions found by set_FAT32_variables
|
||||||
longname_sec1 dd 0 ; used by analyze_directory to save 2 previous
|
longname_sec1 dd 0 ; used by analyze_directory to save 2 previous
|
||||||
longname_sec2 dd 0 ; directory sectors for delete long filename
|
longname_sec2 dd 0 ; directory sectors for delete long filename
|
||||||
@ -83,13 +82,6 @@ cluster_tmp dd 0 ; used by analyze_directory
|
|||||||
|
|
||||||
file_size dd 0 ; used by file_read
|
file_size dd 0 ; used by file_read
|
||||||
|
|
||||||
sector_tmp dd 0 ; used by rename,append,file_write
|
|
||||||
entry_pos dd 0 ; used by rename,append,file_write
|
|
||||||
|
|
||||||
old_filesize dd 0 ; used by append
|
|
||||||
new_filepos dd 0 ; used by append
|
|
||||||
bytes2write dd 0 ; used by append
|
|
||||||
|
|
||||||
cache_search_start dd 0 ; used by find_empty_slot
|
cache_search_start dd 0 ; used by find_empty_slot
|
||||||
endg
|
endg
|
||||||
|
|
||||||
@ -106,13 +98,8 @@ fat_cache: times 512 db 0
|
|||||||
endg
|
endg
|
||||||
|
|
||||||
uglobal
|
uglobal
|
||||||
dir_entry: times 32 db 0
|
|
||||||
|
|
||||||
startpath: times 255 db 0
|
|
||||||
|
|
||||||
fat16_root db 0 ; flag for fat16 rootdir
|
fat16_root db 0 ; flag for fat16 rootdir
|
||||||
fat_change db 0 ; 1=fat has changed
|
fat_change db 0 ; 1=fat has changed
|
||||||
|
|
||||||
endg
|
endg
|
||||||
|
|
||||||
reserve_hd1:
|
reserve_hd1:
|
||||||
@ -470,131 +457,6 @@ analyze_directory:
|
|||||||
ret
|
ret
|
||||||
|
|
||||||
|
|
||||||
analyze_directory_to_write:
|
|
||||||
;-----------------------------------------------------------
|
|
||||||
; input : EAX = first cluster of the directory
|
|
||||||
; output : IF CARRY=0 EAX = sector where the empty pos is found
|
|
||||||
; EBX = pointer in buffer
|
|
||||||
; [buffer .. buffer+511]
|
|
||||||
; ECX,EDX,ESI,EDI not changed
|
|
||||||
; IF CARRY=1 disk full or fat corrupted
|
|
||||||
; Note : if cluster=0 it's changed to read rootdir
|
|
||||||
;-----------------------------------------------------------
|
|
||||||
push ecx edx edi
|
|
||||||
|
|
||||||
adw_new_cluster:
|
|
||||||
mov [cluster_tmp],eax
|
|
||||||
mov [fat16_root],0
|
|
||||||
cmp eax,[LAST_CLUSTER]
|
|
||||||
ja adw_not_found ; too big cluster number, something is wrong
|
|
||||||
cmp eax,2
|
|
||||||
jnb adw_data_cluster
|
|
||||||
|
|
||||||
mov eax,[ROOT_CLUSTER] ; if cluster < 2 then read rootdir
|
|
||||||
cmp [fs_type],16
|
|
||||||
jne adw_data_cluster
|
|
||||||
mov eax,[ROOT_START]
|
|
||||||
mov edx,[ROOT_SECTORS]
|
|
||||||
mov [fat16_root],1 ; flag for fat16 rootdir
|
|
||||||
jmp adw_new_sector
|
|
||||||
|
|
||||||
adw_data_cluster:
|
|
||||||
sub eax,2
|
|
||||||
mov edx,[SECTORS_PER_CLUSTER]
|
|
||||||
imul eax,edx
|
|
||||||
add eax,[DATA_START]
|
|
||||||
|
|
||||||
adw_new_sector:
|
|
||||||
mov ebx,buffer
|
|
||||||
call hd_read
|
|
||||||
cmp [hd_error],0
|
|
||||||
jne adw_not_found
|
|
||||||
|
|
||||||
mov ecx,512/32 ; count of dir entrys per sector = 16
|
|
||||||
|
|
||||||
adw_analyze:
|
|
||||||
cmp byte [ebx],0x00 ; is free entry?
|
|
||||||
je adw_found ; yes
|
|
||||||
cmp byte [ebx],0xe5 ; is deleted entry?
|
|
||||||
je adw_found ; yes
|
|
||||||
add ebx,32 ; position of next dir entry
|
|
||||||
dec ecx
|
|
||||||
jnz adw_analyze
|
|
||||||
|
|
||||||
inc eax ; next sector
|
|
||||||
dec edx
|
|
||||||
jne adw_new_sector
|
|
||||||
cmp [fat16_root],1 ; end of fat16 rootdir
|
|
||||||
je adw_not_found
|
|
||||||
|
|
||||||
mov eax,[cluster_tmp]
|
|
||||||
call get_FAT ; get next cluster
|
|
||||||
cmp [hd_error],0
|
|
||||||
jne adw_not_found
|
|
||||||
|
|
||||||
cmp eax,2 ; incorrect fat chain?
|
|
||||||
jb adw_not_found ; yes
|
|
||||||
cmp eax,[fatRESERVED] ; is it end of directory?
|
|
||||||
jb adw_new_cluster ; no. analyse it
|
|
||||||
|
|
||||||
mov eax,2 ; this block of code add a new cluster
|
|
||||||
call get_free_FAT ; for the directory because the directory
|
|
||||||
jc adw_not_found ; is full
|
|
||||||
|
|
||||||
mov edx,[fatEND] ; new end for directory
|
|
||||||
call set_FAT
|
|
||||||
cmp [hd_error],0
|
|
||||||
jne adw_not_found
|
|
||||||
|
|
||||||
push eax ; save new cluster
|
|
||||||
mov edx,eax
|
|
||||||
mov eax,[cluster_tmp] ; change last cluster to point new cluster
|
|
||||||
call set_FAT
|
|
||||||
cmp [hd_error],0
|
|
||||||
jne adw_not_found_1
|
|
||||||
|
|
||||||
mov ecx,-1 ; remove 1 cluster from free disk space
|
|
||||||
call add_disk_free_space
|
|
||||||
cmp [hd_error],0
|
|
||||||
jne adw_not_found_1
|
|
||||||
|
|
||||||
mov ecx,512/4
|
|
||||||
xor eax,eax
|
|
||||||
mov edi,buffer
|
|
||||||
cld
|
|
||||||
rep stosd ; clear new directory cluster
|
|
||||||
pop eax
|
|
||||||
|
|
||||||
sub eax,2
|
|
||||||
mov ecx,[SECTORS_PER_CLUSTER]
|
|
||||||
imul eax,ecx
|
|
||||||
add eax,[DATA_START]
|
|
||||||
mov ebx,buffer
|
|
||||||
push eax ; save sector number
|
|
||||||
|
|
||||||
adw_set_empty_directory:
|
|
||||||
call hd_write
|
|
||||||
cmp [hd_error],0
|
|
||||||
jne adw_not_found_1
|
|
||||||
|
|
||||||
inc eax ; next sector
|
|
||||||
dec ecx
|
|
||||||
jnz adw_set_empty_directory
|
|
||||||
|
|
||||||
pop eax
|
|
||||||
|
|
||||||
adw_found:
|
|
||||||
pop edi edx ecx
|
|
||||||
clc ; free space found
|
|
||||||
ret
|
|
||||||
adw_not_found_1:
|
|
||||||
add esp,4
|
|
||||||
adw_not_found:
|
|
||||||
pop edi edx ecx
|
|
||||||
stc ; free space not found
|
|
||||||
ret
|
|
||||||
|
|
||||||
|
|
||||||
get_data_cluster:
|
get_data_cluster:
|
||||||
;-----------------------------------------------------------
|
;-----------------------------------------------------------
|
||||||
; input : EAX = cluster
|
; input : EAX = cluster
|
||||||
@ -660,43 +522,6 @@ get_data_cluster:
|
|||||||
ret
|
ret
|
||||||
|
|
||||||
|
|
||||||
set_data_cluster:
|
|
||||||
;-----------------------------------------------------------
|
|
||||||
; input : EAX = cluster
|
|
||||||
; EBX = pointer to buffer
|
|
||||||
; output : if CARRY=0 ok
|
|
||||||
; if CARRY=1 cluster out of range
|
|
||||||
;-----------------------------------------------------------
|
|
||||||
push eax ebx edx
|
|
||||||
|
|
||||||
cmp eax,[LAST_CLUSTER]
|
|
||||||
ja sdc_error ; too big cluster number, something is wrong
|
|
||||||
sub eax,2
|
|
||||||
jb sdc_error ; don't allow rootdir write
|
|
||||||
|
|
||||||
mov edx,[SECTORS_PER_CLUSTER]
|
|
||||||
imul eax,edx
|
|
||||||
add eax,[DATA_START]
|
|
||||||
|
|
||||||
sdc_write:
|
|
||||||
call hd_write
|
|
||||||
cmp [hd_error],0
|
|
||||||
jne sdc_error
|
|
||||||
|
|
||||||
add ebx,512 ; update pointer
|
|
||||||
inc eax
|
|
||||||
dec edx
|
|
||||||
jnz sdc_write
|
|
||||||
pop edx ebx eax
|
|
||||||
clc
|
|
||||||
ret
|
|
||||||
|
|
||||||
sdc_error:
|
|
||||||
pop edx ebx eax
|
|
||||||
stc
|
|
||||||
ret
|
|
||||||
|
|
||||||
|
|
||||||
get_cluster_of_a_path:
|
get_cluster_of_a_path:
|
||||||
;---------------------------------------------------------
|
;---------------------------------------------------------
|
||||||
; input : EBX = pointer to a path string
|
; input : EBX = pointer to a path string
|
||||||
@ -855,191 +680,6 @@ add_disk_free_space:
|
|||||||
ret
|
ret
|
||||||
|
|
||||||
|
|
||||||
file_write:
|
|
||||||
;--------------------------------------------------------------------------
|
|
||||||
; INPUT : user-reg register-in-this meaning symbol-in-this-routine
|
|
||||||
;
|
|
||||||
; EAX EDI system call to write /
|
|
||||||
; EBX EAX (PAR0) pointer to file-name PAR0
|
|
||||||
; EDX ECX (PAR1) pointer to buffer PAR1
|
|
||||||
; ECX EBX (PAR2) file size PAR2
|
|
||||||
; ESI EDX (PAR3) pointer to path PAR3
|
|
||||||
;
|
|
||||||
; output : eax = 0 - ok
|
|
||||||
; 3 - unknown FS
|
|
||||||
; 5 - file not found
|
|
||||||
; 8 - disk full
|
|
||||||
; 10 - access denied
|
|
||||||
;--------------------------------------------------------------------------
|
|
||||||
cmp [fs_type], 16
|
|
||||||
jz fat_ok_for_writing
|
|
||||||
cmp [fs_type], 32
|
|
||||||
jz fat_ok_for_writing
|
|
||||||
push ERROR_UNKNOWN_FS
|
|
||||||
pop eax
|
|
||||||
ret
|
|
||||||
|
|
||||||
fat_ok_for_writing:
|
|
||||||
; call reserve_hd1
|
|
||||||
|
|
||||||
pushad
|
|
||||||
|
|
||||||
xor edi,edi ; don't allow directory remove
|
|
||||||
call file_delete ; try to delete the file first
|
|
||||||
cmp [hd_error],0
|
|
||||||
jne exit_write_access_1
|
|
||||||
|
|
||||||
test eax,eax
|
|
||||||
jz old_deleted ; deleted ok
|
|
||||||
cmp eax,ERROR_FILE_NOT_FOUND
|
|
||||||
jnz exit_write_access ; it exist but can't delete
|
|
||||||
|
|
||||||
old_deleted:
|
|
||||||
mov ebx,PUSHAD_EDX
|
|
||||||
call get_cluster_of_a_path
|
|
||||||
jnc found_directory_for_writing
|
|
||||||
cmp [hd_error],0
|
|
||||||
jne exit_write_access
|
|
||||||
|
|
||||||
exit_writing_with_error:
|
|
||||||
popad
|
|
||||||
call update_disk ; write all of cache and fat to hd
|
|
||||||
cmp [hd_error],0
|
|
||||||
jne exit_write_access_2
|
|
||||||
|
|
||||||
mov [hd1_status],0
|
|
||||||
mov eax,ERROR_FILE_NOT_FOUND
|
|
||||||
ret
|
|
||||||
|
|
||||||
exit_writing_disk_full_clear:
|
|
||||||
cmp [hd_error],0
|
|
||||||
jne exit_write_access_1
|
|
||||||
mov eax,[sector_tmp]
|
|
||||||
mov ebx,buffer
|
|
||||||
call hd_read ; read directory sector
|
|
||||||
cmp [hd_error],0
|
|
||||||
jne exit_write_access_1
|
|
||||||
|
|
||||||
mov edx,[entry_pos]
|
|
||||||
mov byte [edx],0xe5 ; mark as deleted
|
|
||||||
call hd_write
|
|
||||||
cmp [hd_error],0
|
|
||||||
jne exit_write_access_1
|
|
||||||
|
|
||||||
mov eax,[edx+20-2] ; FAT entry
|
|
||||||
mov ax,[edx+26]
|
|
||||||
and eax,[fatMASK]
|
|
||||||
call clear_cluster_chain
|
|
||||||
|
|
||||||
exit_writing_disk_full:
|
|
||||||
cmp [hd_error],0
|
|
||||||
jne exit_write_access_1
|
|
||||||
popad
|
|
||||||
call update_disk ; write all of cache and fat to hd
|
|
||||||
cmp [hd_error],0
|
|
||||||
jne exit_write_access_2
|
|
||||||
mov [hd1_status],0
|
|
||||||
mov eax,ERROR_DISK_FULL
|
|
||||||
ret
|
|
||||||
|
|
||||||
exit_write_access:
|
|
||||||
popad
|
|
||||||
call update_disk ; write all of cache and fat to hd
|
|
||||||
mov [hd1_status],0
|
|
||||||
mov eax,ERROR_ACCESS_DENIED
|
|
||||||
ret
|
|
||||||
|
|
||||||
exit_write_access_1:
|
|
||||||
popad
|
|
||||||
exit_write_access_2:
|
|
||||||
mov [hd1_status],0
|
|
||||||
mov eax,ERROR_ACCESS_DENIED
|
|
||||||
ret
|
|
||||||
|
|
||||||
found_directory_for_writing:
|
|
||||||
call analyze_directory_to_write
|
|
||||||
jc exit_writing_disk_full
|
|
||||||
|
|
||||||
mov [sector_tmp],eax
|
|
||||||
mov [entry_pos],ebx
|
|
||||||
push eax ; save directory sector
|
|
||||||
mov eax,2
|
|
||||||
call get_free_FAT
|
|
||||||
mov [cluster],eax ; first free cluster
|
|
||||||
pop eax
|
|
||||||
jc exit_writing_disk_full
|
|
||||||
|
|
||||||
mov esi,PUSHAD_EAX ; file name
|
|
||||||
mov edi,ebx ; pointer in buffer
|
|
||||||
mov ecx,11
|
|
||||||
cld
|
|
||||||
rep movsb
|
|
||||||
|
|
||||||
mov esi,PUSHAD_EBX ; file size (bytes left)
|
|
||||||
mov [ebx+28],esi ; file size
|
|
||||||
mov ecx,[cluster]
|
|
||||||
mov [ebx+26],cx ; 16 bits low of cluster
|
|
||||||
shr ecx,16
|
|
||||||
mov [ebx+20],cx ; 16 bits high of cluster (=0 fat16)
|
|
||||||
mov byte [ebx+11],0x20 ; attribute = archive
|
|
||||||
|
|
||||||
call set_current_time_for_entry
|
|
||||||
|
|
||||||
mov ebx,buffer ; save the directory name,length,cluster
|
|
||||||
call hd_write
|
|
||||||
cmp [hd_error],0
|
|
||||||
jne exit_write_access_1
|
|
||||||
|
|
||||||
imul edi,[SECTORS_PER_CLUSTER],512 ; edi = cluster size in bytes
|
|
||||||
xor ecx,ecx ; cluster count
|
|
||||||
mov ebx,PUSHAD_ECX ; ebx = buffer
|
|
||||||
|
|
||||||
hd_new_block_write:
|
|
||||||
|
|
||||||
mov eax,[cluster] ; eax = block
|
|
||||||
call set_data_cluster
|
|
||||||
cmp [hd_error],0
|
|
||||||
jne exit_write_access_1
|
|
||||||
|
|
||||||
sub esi,edi ; sub wrote bytes
|
|
||||||
jbe file_saved_OK ; end if all done
|
|
||||||
add ebx,edi ; update buffer position
|
|
||||||
|
|
||||||
inc eax
|
|
||||||
call get_free_FAT ; next free in FAT
|
|
||||||
jc exit_writing_disk_full_clear
|
|
||||||
|
|
||||||
mov edx,eax
|
|
||||||
xchg eax,[cluster] ; get old cluster and save new cluster
|
|
||||||
call set_FAT ; add it in cluster chain
|
|
||||||
cmp [hd_error],0
|
|
||||||
jne exit_write_access_1
|
|
||||||
|
|
||||||
dec ecx ; update cluster count
|
|
||||||
jmp hd_new_block_write
|
|
||||||
|
|
||||||
file_saved_OK:
|
|
||||||
|
|
||||||
mov edx,[fatEND] ; new end for cluster chain
|
|
||||||
call set_FAT
|
|
||||||
cmp [hd_error],0
|
|
||||||
jne exit_write_access_1
|
|
||||||
|
|
||||||
dec ecx ; update cluster count
|
|
||||||
|
|
||||||
call add_disk_free_space ; remove clusters from free disk space
|
|
||||||
cmp [hd_error],0
|
|
||||||
jne exit_write_access_1
|
|
||||||
|
|
||||||
popad
|
|
||||||
call update_disk ; write all of cache and fat to hd
|
|
||||||
cmp [hd_error],0
|
|
||||||
jne exit_write_access_2
|
|
||||||
mov [hd1_status],0
|
|
||||||
xor eax,eax
|
|
||||||
ret
|
|
||||||
|
|
||||||
|
|
||||||
file_read:
|
file_read:
|
||||||
;--------------------------------------------------------------------------
|
;--------------------------------------------------------------------------
|
||||||
; INPUT : user-register register-in-this meaning symbol-in-this
|
; INPUT : user-register register-in-this meaning symbol-in-this
|
||||||
@ -1209,67 +849,6 @@ get_dir_size:
|
|||||||
ret
|
ret
|
||||||
|
|
||||||
|
|
||||||
file_delete:
|
|
||||||
;-----------------------------------------------------
|
|
||||||
; input : eax = file/directory name
|
|
||||||
; edx = path
|
|
||||||
; edi = 1 - allow directory remove else don't remove directory
|
|
||||||
; output : eax = 0 - ok
|
|
||||||
; 3 - unknown FS
|
|
||||||
; 5 - file not found
|
|
||||||
; 10 - access denied
|
|
||||||
;-----------------------------------------------------
|
|
||||||
cmp [fs_type], 16
|
|
||||||
jz file_del_fat_ok
|
|
||||||
cmp [fs_type], 32
|
|
||||||
jz file_del_fat_ok
|
|
||||||
push ERROR_UNKNOWN_FS
|
|
||||||
pop eax
|
|
||||||
ret
|
|
||||||
|
|
||||||
file_del_fat_ok:
|
|
||||||
pushad
|
|
||||||
|
|
||||||
mov ebx,edx
|
|
||||||
call get_cluster_of_a_path
|
|
||||||
jc file_to_delete_not_found
|
|
||||||
|
|
||||||
mov ebx,PUSHAD_EAX ; file/directory name
|
|
||||||
call analyze_directory
|
|
||||||
jc file_to_delete_not_found
|
|
||||||
|
|
||||||
test byte [ebx+11],0x10 ; is it directory?
|
|
||||||
jnz delete_no_access
|
|
||||||
|
|
||||||
delete_notdir:
|
|
||||||
call delete_entry_name
|
|
||||||
cmp [hd_error],0
|
|
||||||
jne delete_no_access
|
|
||||||
|
|
||||||
mov eax,ecx ; first cluster of file
|
|
||||||
call clear_cluster_chain
|
|
||||||
cmp [hd_error],0
|
|
||||||
jne delete_no_access
|
|
||||||
|
|
||||||
popad
|
|
||||||
xor eax,eax
|
|
||||||
ret
|
|
||||||
|
|
||||||
delete_no_access_1:
|
|
||||||
add esp,4
|
|
||||||
delete_no_access:
|
|
||||||
popad
|
|
||||||
mov eax,ERROR_ACCESS_DENIED
|
|
||||||
ret
|
|
||||||
|
|
||||||
file_to_delete_not_found:
|
|
||||||
cmp [hd_error],0
|
|
||||||
jne delete_no_access
|
|
||||||
popad
|
|
||||||
mov eax,ERROR_FILE_NOT_FOUND
|
|
||||||
ret
|
|
||||||
|
|
||||||
|
|
||||||
clear_cluster_chain:
|
clear_cluster_chain:
|
||||||
;-----------------------------------------------------
|
;-----------------------------------------------------
|
||||||
; input : eax = first cluster
|
; input : eax = first cluster
|
||||||
@ -1301,60 +880,6 @@ clear_cluster_chain:
|
|||||||
ret
|
ret
|
||||||
|
|
||||||
|
|
||||||
delete_entry_name:
|
|
||||||
;-----------------------------------------------------
|
|
||||||
; input : eax = directory sector
|
|
||||||
; ebx = directory pointer in buffer
|
|
||||||
; longname_sec = 2 previous directory sectors
|
|
||||||
; output : ecx = first cluster
|
|
||||||
; change : eax,ebx,edx
|
|
||||||
;-----------------------------------------------------
|
|
||||||
mov byte [ebx],0xe5
|
|
||||||
mov ecx,[ebx+20-2] ; first cluster of file
|
|
||||||
mov cx,[ebx+26] ; 0 length files start cluster = 0
|
|
||||||
and ecx,[fatMASK]
|
|
||||||
|
|
||||||
delete_empty:
|
|
||||||
sub ebx,32
|
|
||||||
cmp ebx,buffer
|
|
||||||
jnb delete_test_long
|
|
||||||
|
|
||||||
mov ebx,buffer
|
|
||||||
call hd_write ; write directory sector back
|
|
||||||
cmp [hd_error],0
|
|
||||||
jne delete_name_end
|
|
||||||
|
|
||||||
xor eax,eax
|
|
||||||
xchg eax,[longname_sec2]
|
|
||||||
xchg eax,[longname_sec1]
|
|
||||||
test eax,eax ; is there previous directory sector?
|
|
||||||
jz delete_name_end ; no
|
|
||||||
|
|
||||||
mov ebx,buffer
|
|
||||||
call hd_read ; read previous sector
|
|
||||||
cmp [hd_error],0
|
|
||||||
jne delete_name_end
|
|
||||||
|
|
||||||
mov ebx,buffer+0x1e0 ; start from last entry
|
|
||||||
|
|
||||||
delete_test_long:
|
|
||||||
mov dh,[ebx+11] ; file attribute
|
|
||||||
and dh,0xf
|
|
||||||
cmp dh,0xf
|
|
||||||
jne delete_write_buffer
|
|
||||||
|
|
||||||
cmp byte [ebx],0x40 ; end of long dir entry?
|
|
||||||
mov byte [ebx],0xe5
|
|
||||||
jb delete_empty
|
|
||||||
|
|
||||||
delete_write_buffer:
|
|
||||||
mov ebx,buffer
|
|
||||||
call hd_write ; write directory sector back
|
|
||||||
|
|
||||||
delete_name_end:
|
|
||||||
ret
|
|
||||||
|
|
||||||
|
|
||||||
get_hd_info:
|
get_hd_info:
|
||||||
;-----------------------------------------------------------
|
;-----------------------------------------------------------
|
||||||
; output : eax = 0 - ok
|
; output : eax = 0 - ok
|
||||||
@ -1428,55 +953,6 @@ update_disk:
|
|||||||
update_disk_acces_denied:
|
update_disk_acces_denied:
|
||||||
ret
|
ret
|
||||||
|
|
||||||
read_hd_file:
|
|
||||||
;-----------------------------------------------------------------
|
|
||||||
;
|
|
||||||
; Converting old reading function for hd-application start.
|
|
||||||
;
|
|
||||||
; IN:
|
|
||||||
;
|
|
||||||
; eax - pointer to file (0 = read only first sector of drive: eg 'label')
|
|
||||||
; ebx - file lenght
|
|
||||||
; ecx - start 512 byte block number
|
|
||||||
; edx - number of blocks to read
|
|
||||||
; esi - pointer to return/work area (atleast 20 000 bytes)
|
|
||||||
;
|
|
||||||
; For new read function
|
|
||||||
;
|
|
||||||
; EAX (PAR0) pointer to file-name
|
|
||||||
; ECX (PAR1) pointer to buffer
|
|
||||||
; EBX (PAR2) vt file blocks to read
|
|
||||||
; EDX (PAR3) pointer to path
|
|
||||||
; ESI vt first 512 block to read
|
|
||||||
; EDI if 0 - return root
|
|
||||||
;--------------------------------------------------------------------------
|
|
||||||
|
|
||||||
push ecx esi edi
|
|
||||||
mov esi,eax
|
|
||||||
mov edi,startpath
|
|
||||||
mov ecx,250
|
|
||||||
cld
|
|
||||||
rep movsb
|
|
||||||
pop edi esi ecx
|
|
||||||
|
|
||||||
mov eax,startpath
|
|
||||||
mov [eax+ebx-12],byte 0
|
|
||||||
|
|
||||||
push eax ebx ecx edx esi
|
|
||||||
|
|
||||||
pop ecx ; pointer to buffer
|
|
||||||
add ecx,1024
|
|
||||||
pop ebx ; number of blocks to read
|
|
||||||
pop esi ; first block to read
|
|
||||||
dec esi
|
|
||||||
pop eax ; file length
|
|
||||||
pop edx ; pointer to path
|
|
||||||
|
|
||||||
mov edi,12
|
|
||||||
lea eax,[eax+edx-12+1]
|
|
||||||
call file_read
|
|
||||||
|
|
||||||
ret
|
|
||||||
|
|
||||||
; \begin{diamond}
|
; \begin{diamond}
|
||||||
hd_find_lfn:
|
hd_find_lfn:
|
||||||
|
@ -41,7 +41,6 @@ file_system:
|
|||||||
; IN:
|
; IN:
|
||||||
;
|
;
|
||||||
; eax = 0 ; read file /RamDisk/First 6
|
; eax = 0 ; read file /RamDisk/First 6
|
||||||
; eax = 1 ; write file /RamDisk/First 33 /HardDisk/First 56
|
|
||||||
; eax = 8 ; lba read
|
; eax = 8 ; lba read
|
||||||
; eax = 15 ; get_disk_info
|
; eax = 15 ; get_disk_info
|
||||||
;
|
;
|
||||||
@ -263,22 +262,6 @@ endg
|
|||||||
|
|
||||||
|
|
||||||
fs_noramdisk_read:
|
fs_noramdisk_read:
|
||||||
|
|
||||||
cmp dword [esp+20],1 ; WRITE
|
|
||||||
jne fs_noramdisk_write
|
|
||||||
|
|
||||||
mov eax,[esp+4] ; fname
|
|
||||||
add eax,2*12+1
|
|
||||||
mov ebx,[esp+8] ; buffer
|
|
||||||
mov ecx,[esp+12] ; count to write
|
|
||||||
mov edx,0 ; create new
|
|
||||||
call filesave
|
|
||||||
|
|
||||||
; eax=0 ok - eax=1 not enough free space
|
|
||||||
|
|
||||||
jmp file_system_return
|
|
||||||
|
|
||||||
fs_noramdisk_write:
|
|
||||||
fs_noramdisk:
|
fs_noramdisk:
|
||||||
|
|
||||||
;********************************************************************
|
;********************************************************************
|
||||||
@ -329,23 +312,6 @@ endg
|
|||||||
|
|
||||||
|
|
||||||
fs_noflpdisk_read:
|
fs_noflpdisk_read:
|
||||||
|
|
||||||
cmp dword [esp+20],1 ; WRITE
|
|
||||||
jne fs_noflpdisk_write
|
|
||||||
|
|
||||||
mov eax,[esp+4] ; fname
|
|
||||||
add eax,2*12+1
|
|
||||||
mov ebx,[esp+8] ; buffer
|
|
||||||
mov ecx,[esp+12] ; count to write
|
|
||||||
mov edx,0 ; create new
|
|
||||||
call floppy_filesave
|
|
||||||
|
|
||||||
; eax=0 ok - eax=1 not enough free space
|
|
||||||
|
|
||||||
jmp file_system_return
|
|
||||||
|
|
||||||
fs_noflpdisk_write:
|
|
||||||
|
|
||||||
fs_noflpdisk:
|
fs_noflpdisk:
|
||||||
;*****************************************************************
|
;*****************************************************************
|
||||||
|
|
||||||
@ -476,34 +442,6 @@ hd_err_return:
|
|||||||
|
|
||||||
fs_noharddisk_read:
|
fs_noharddisk_read:
|
||||||
|
|
||||||
|
|
||||||
cmp dword [esp+20],1 ; WRITE
|
|
||||||
jne fs_noharddisk_write
|
|
||||||
|
|
||||||
mov eax,[esp+0] ; /fname
|
|
||||||
mov byte [eax],0 ; path to asciiz
|
|
||||||
inc eax ; filename start
|
|
||||||
|
|
||||||
mov ebx,[esp+12] ; count to write
|
|
||||||
mov ecx,[esp+8] ; buffer
|
|
||||||
mov edx,[esp+4]
|
|
||||||
add edx,12*2 ; path start
|
|
||||||
|
|
||||||
call file_write
|
|
||||||
|
|
||||||
mov edi,[esp+0]
|
|
||||||
mov byte [edi],'/'
|
|
||||||
|
|
||||||
; eax=0 ok - eax=1 not enough free space
|
|
||||||
|
|
||||||
call free_hd_channel
|
|
||||||
and [hd1_status], 0
|
|
||||||
jmp file_system_return
|
|
||||||
|
|
||||||
|
|
||||||
fs_noharddisk_write:
|
|
||||||
|
|
||||||
|
|
||||||
call free_hd_channel
|
call free_hd_channel
|
||||||
and [hd1_status], 0
|
and [hd1_status], 0
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user