亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? fat32.inc

?? MenuetOS是一個用匯編開發的32/64位PC操作系統
?? INC
?? 第 1 頁 / 共 4 頁
字號:
                or dx,ax
                xchg ax,dx   ;the result must be in AX
                pop dx
                ret

;-----------------------------------------------------
; Get time from CMOS and pack hour,minute,second in AX
; TIME   bits  0..4   : second (the low bit is lost)
;              5..10  : minute 0..59
;              11..15 : hour 0..23
;-----------------------------------------------------
get_time_for_file:
                push dx
                xor dx,dx
                mov al,0x0   ;second
                out 0x70,al
                in al,0x71
                call bcd2bin
                shr ax,1
                or dx,ax

                mov al,0x2   ;minute
                out 0x70,al
                in al,0x71
                call bcd2bin
                shl ax,5
                or dx,ax

                mov al,0x4   ;hour
                out 0x70,al
                in al,0x71
                call bcd2bin
                shl ax,11
                or dx,ax
                xchg ax,dx   ;the result must be in AX
                pop dx
                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
;            eax = 1 - error at write
;            eax = 2 - bad partition
;
;--------------------------------------------------------------------------

;***********************
;*         Start       *
;* Mario79 edited code *
;*        Fat16        *
;*     change 1.19     *
;***********************
  mov  [file_or_directory],1
;***********************
;*         End         *
;* Mario79 edited code *
;*        Fat16        *
;*     change 1.19     *
;***********************

;***********************
;*         Start       *
;* Mario79 edited code *
;*  correct free mem   *
;*     change 1.2      *
;***********************
    mov [FILE_SIZE],ebx
;***********************
;*         End         *
;* Mario79 edited code *
;*  correct free mem   *
;*     change 1.2      *
;***********************

    cmp  [valid_fat],byte 1
    jz   fat_ok_for_writing
    mov  eax,2
    ret
fat_ok_for_writing:

   cli
   cmp  [hd1_status],0
   je   fatokl1

   sti
   call change_task
   jmp  fat_ok_for_writing

  fatokl1:

   call reserve_hd1
   sti

   sub  esp,32
   call expand_filename

   pusha
   mov ecx,edx            ;try to delete the file first
   call file_delete
   popa

   pushad

PAR0 equ [esp+28]        ;EAX
PAR1 equ [esp+24]        ;ECX
PAR2 equ [esp+16]        ;EBX
PAR3 equ [esp+20]        ;EDX


   mov ebx,PAR3
   call get_cluster_of_a_path
   jnc found_directory_for_writing

exit_writing_with_error:

   mov   edi,1            ; write all of cache to hd
   call  write_cache

   popa
   stc

   add  esp,32
   mov  [hd1_status],0
   mov  eax,1
   ret

found_directory_for_writing:
   call analyze_directory_to_write

found1:
   push eax

;***********************
;*         Start       *
;* Mario79 edited code *
;*        Fat16        *
;*     change 1.20     *
;***********************
  xor eax,eax
  cmp [fs_type],2
  je correct3_15_1
   mov eax,2
correct3_15_1:
;***********************
;*         End         *
;* Mario79 edited code *
;*        Fat16        *
;*     change 1.20     *
;***********************

   call get_free_FAT
   mov [cluster],eax
   pop eax

   push ebx
   mov ebx,buffer
   call hd_read ;_new
   pop ebx

   mov esi,PAR0             ;file name
   mov edi,ebx
   mov ecx,11
   cld
   rep movsb

   mov ecx,PAR2
   mov [ebx+28],ecx         ;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
   mov byte [ebx+11],0x20   ;attrib
   push eax

   call get_time_for_file
   mov [ebx+22],ax

   call get_data_for_file
   mov [ebx+24],ax

   pop eax

   mov ebx,buffer           ;save the directory name,length,cluster
   call hd_write_new

   imul esi,[SECTOR_PER_CLUSTER],512

hd_new_block_write:

   mov  eax,[cluster]      ; eax = block
   mov  ebx,PAR1           ; ebx = buffer
   call set_data_cluster

   mov  ecx,esi            ; ecx = size to write in bytes
   cmp  ecx,PAR2
   jbe  adr3
   mov  ecx,PAR2
 adr3:

   add  PAR1,ecx
   sub  PAR2,ecx            ; sub wrote bytes in stack

   cmp  PAR2,dword 0
   je   file_saved_OK

   mov  eax,[cluster]
   inc  eax
   call get_free_FAT
   mov  [cluster1],eax      ; next free in FAT

   mov  eax,[cluster]
   mov  edx,[cluster1]
   call set_FAT

   mov  eax,[cluster1]
   mov  [cluster],eax

   jmp  hd_new_block_write     ; adr2

file_saved_OK:

   mov  eax,[cluster]
   mov  edx,0x0fffffff
   call set_FAT

   mov   edi,1            ; write all of cache to hd
   call  write_cache

   popad
   clc

   add  esp,32
;   mov  [hd1_status],0   ; free device
;   mov  eax,0
;   ret
;***********************
;*         Start       *
;* Mario79 edited code *
;*  correct free mem   *
;*     change 1.3      *
;***********************
   cmp [fs_type],2          ;For Fat16 the correction is not necessary!
   je correct10_11
   call write_free_mem_hd   
correct10_11:
   mov  [hd1_status],0
   xor  eax, eax
   ret

write_free_mem_hd:
   mov  eax,[PARTITION_START]
   mov  ebx,buffer
   call hd_read ;_new
   movzx  ecx,word [ebx+48]
   add  eax,ecx
   mov  [ADR_FSINFO],eax
   call hd_read ;_new
   mov  eax,[FILE_SIZE]
   call  calc_file_size_claster
   mov  [FILE_SIZE],eax
   cmp  [change_mem],1
   je change_mem_1
   cmp  [change_mem],2
   je change_mem_2
   jmp change_mem_3
change_mem_2:
   mov  eax,[old_size_file]
   call  calc_file_size_claster
   add  [buffer+488],eax
change_mem_1:
   mov  eax,[FILE_SIZE]
   sub  [buffer+488],eax
   mov  eax,[ADR_FSINFO]
   mov  ebx,buffer
   call hd_write_new_sys
   call wait_for_hd_idle
change_mem_3:
   ret
calc_file_size_claster:
   mov  ebx,[SECTOR_PER_CLUSTER]
   call correct_calc
   mov  ebx,512
   call correct_calc
   ret
correct_calc:
   xor  edx,edx
   div  ebx
   cmp edx,0
   je not_correction
   inc eax
not_correction:
   ret
;***********************
;*          End        *
;* Mario79 edited code *
;*  correct free mem   *
;*     change 1.3      *
;***********************

file_read:
;--------------------------------------------------------------------------
;   INPUT :  user-register register-in-this  meaning         symbol-in-this
;
;            EAX           EDI               system call to write   /
;            EBX           EAX   (PAR0)      pointer to file-name   PAR0
;            EDX           ECX   (PAR1)      pointer to buffer      PAR1
;            ECX           EBX   (PAR2)   vt file blocks to read    PAR2
;            ESI           EDX   (PAR3)      pointer to path        PAR3
;            EDI           ESI            vt first 512 block to read
;                          EDI               if 0 - read root
;
; OUT:
;
; eax = 0 command succesful
;       1 no hd base and/or partition defined
;       - 2 yet unsupported FS
;       - 3 unknown FS
;       - 4 partition not defined at hd
;       5 eof
;       6 file not found
; ebx = size of file
;--------------------------------------------------------------------------
   cmp  [valid_fat],byte 1
   jz   fat_ok_for_reading
   mov  ebx,0
   mov  eax,1 ; partition not defined
   ret

fat_ok_for_reading:

   cli
   cmp  [hd1_status],0
   je   fatokr1
   sti
   call change_task
   jmp  fat_ok_for_reading

  fatokr1:

   call reserve_hd1
   sti

   mov  [data_read],esi
   mov  [blocks_to_read],ebx
   mov  [return_data_pointer],ecx
   mov  [fat_in_cache],-1

   pushad

PAR0 equ [esp+28]        ;EAX
PAR1 equ [esp+24]        ;ECX
PAR2 equ [esp+16]        ;EBX
PAR3 equ [esp+20]        ;EDX

   mov ebx,PAR3
   call get_cluster_of_a_path
   jc file_to_read_not_found

   cmp  edi,0            ; read root
   jne  no_read_root

;***********************
;*         Start       *
;* Mario79 edited code *
;*        Fat16        *
;*     change 1.21     *
;***********************

  mov eax,[ROOT_CLUSTER]
  cmp [fs_type],2
  je read_root_f16
  jmp read_root
read_root_f16:
  mov [file_or_directory],0
  jmp read_root
no_read_root:
  mov [file_or_directory],1

;***********************
;*         End         *
;* Mario79 edited code *
;*        Fat16        *
;*     change 1.21     *
;***********************

   mov ebx,PAR0
   call analyze_directory
   jc file_to_read_not_found

found1r:

   mov eax,[ebx+28]  ; file size
   mov [file_size],eax

   mov ax,[ebx+20]   ; FAT entry
   shl eax,16
   mov ax,[ebx+26]

read_root:

   imul esi,[SECTOR_PER_CLUSTER],512

   call get_data_cluster

adr2r:

   cmp [blocks_to_read],0
   je  file_read_OK

   call get_FAT_cache

;***********************
;*         Start       *
;* Mario79 edited code *
;*        Fat16        *
;*     change 1.22     *
;***********************
  cmp [fs_type],2
  je  correct5_4
   cmp  eax,0x0f000000   ; end of file
   jge  file_read_eof
   cmp  eax,0x00000000   ; incorrect fat chain
   je   file_read_eof
 correct6_4:
;***********************
;*         End         *
;* Mario79 edited code *
;*        Fat16        *
;*     change 1.22     *
;***********************

   call get_data_cluster

   jmp adr2r

file_read_OK:
   popad
   mov  [hd1_status],0
   mov  ebx,[file_size]
   mov  eax,0
   ret

file_read_eof:
   popad
   mov  [hd1_status],0
   mov  ebx,[file_size]
   mov  eax,5
   ret

file_to_read_not_found:
   popad
   mov  [hd1_status],0
   mov  ebx,0
   mov  eax,6
   ret

; OUT:
;
; eax = 0 - Command succesful
;       1 - No hd base and/or partition defined
;       2 - Unsupported FS
;       3 - Unknown FS
;       4 - Partition not defined at hd
;       5 - Eof ?
;       6 - File not found ?
; ebx = size of file


f_del db 0x0

file_delete:
;--------------------------------------------------------------------------
;EXPERIMENTAL !!!!!
;      INPUT :  user-reg  register-in-this meaning           symbol-in-this
;               EAX       EDI              system call to delete   /
;               EBX       EAX     (PAR0)   pointer to file-name    PAR0
;               EDX       ECX     (PAR1)   pointer to path         PAR1
;--------------------------------------------------------------------------

    cmp  [valid_fat],byte 1
    jz   fat_ok_for_deleting
    ret
fat_ok_for_deleting:

   pushad

   mov [f_del],1           ; delete on

PAR0 equ [esp+28] ;EAX
PAR1 equ [esp+24] ;ECX

   mov ebx,PAR1
   call get_cluster_of_a_path
   jc file_to_delete_not_found

   mov ebx,PAR0
   call analyze_directory
   jc file_to_delete_not_found

found_delete:

   mov byte [ebx],0xe5

;***********************
;*        Start        *
;* Mario79 edited code *
;*  correct free mem   *
;*     change 1.4      *
;***********************
   mov edx,[ebx+28]
   mov [old_size_file],edx
;***********************
;*          End        *
;* Mario79 edited code *
;*  correct free mem   *
;*     change 1.4      *
;***********************

   mov edx,ebx
   mov ebx,buffer
   call hd_write_new

   mov ebx,edx

   mov ax,[ebx+20]
   shl eax,16
   mov ax,[ebx+26]
   xor edx,edx

clean_new_chain:
   mov ebx,eax

   call get_FAT
   mov ecx,eax

   mov eax,ebx
   call set_FAT

   mov eax,ecx

;***********************
;*         Start       *
;* Mario79 edited code *
;*        Fat16        *
;*     change 1.23     *
;***********************
  cmp [fs_type],2
  je  correct5_3
   cmp eax,0x0f000000  ; end of file
   jge delete_OK
   cmp eax,0x00000000  ; unfinished fat chain
   je  delete_OK
 correct6_3:
;***********************
;*         End         *
;* Mario79 edited code *
;*        Fat16        *
;*     change 1.23     *
;***********************

   jmp clean_new_chain

delete_OK:

   popad
   clc
   mov [f_del],0
;   ret
;
;file_to_delete_not_found:
;
;   popad
;   mov  [f_del],0
;   stc
;   ret

;***********************
;*        Start        *
;* Mario79 edited code *
;*  correct free mem   *
;*     change 1.5      *
;***********************
   mov [change_mem],2
   ret

file_to_delete_not_found:

   popad
   mov  [f_del],0
   stc
   mov [change_mem],1
   ret
;***********************
;*          End        *
;* Mario79 edited code *
;*  correct free mem   *
;*     change 1.5      *
;***********************


;**************************************************************************
;
;   0x600008  - first entry in cache list
;
;            +0   - lba cluster
;            +4   - state of cache cluster
;                   0 = empty
;                   1 = used for read  ( same as in hd )
;                   2 = used for write ( differs from hd )
;
;      +65536 - cache entries
;
;**************************************************************************

hd_read:

;  eax block to read
;  ebx destination

    pusha                 ; scan cache

    mov  ecx,cache_max    ; entries in cache
    mov  esi,0x600000+8
    mov  edi,1

  hdreadcache:

    cmp  [esi+4],dword 0  ; empty
    je   nohdcache

    cmp  [esi],eax        ; correct cluster
    jne  nohdcache

    mov  esi,edi
    shl  esi,9
    add  esi,0x600000+65536
    mov  edi,ebx
    mov  ecx,512
    cld
    rep  movsb
    popa

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91一区一区三区| 日韩欧美国产午夜精品| 欧美日韩免费电影| 亚洲国产精品精华液ab| 日本va欧美va瓶| 99热国产精品| 久久久青草青青国产亚洲免观| 亚洲另类色综合网站| 国产成人亚洲综合色影视| 欧美日高清视频| 亚洲激情中文1区| 国产99久久久精品| 欧美成人欧美edvon| 亚洲二区在线观看| 在线一区二区三区做爰视频网站| 亚洲精品在线电影| 日韩激情视频在线观看| 91女神在线视频| 日韩一区有码在线| 成人小视频在线| 国产欧美在线观看一区| 国产一区二区三区美女| 日韩欧美成人一区| 丝袜诱惑制服诱惑色一区在线观看| 国产98色在线|日韩| 2022国产精品视频| 狠狠色丁香久久婷婷综合丁香| 欧美午夜电影在线播放| 亚洲天堂成人网| 91蜜桃视频在线| 国产精品天干天干在线综合| 国产精品中文字幕日韩精品 | 91免费视频网址| 精品福利在线导航| 精品一区二区三区免费视频| 91精品国产日韩91久久久久久| 天天操天天干天天综合网| 欧美在线观看你懂的| 亚洲va国产va欧美va观看| 欧美性猛交xxxx黑人交 | 欧美国产日产图区| 成人黄色大片在线观看| 中文字幕在线一区| 91美女片黄在线观看91美女| 夜夜操天天操亚洲| 欧美日韩亚洲综合在线 | 成人黄色在线看| 亚洲美女淫视频| 欧美三级一区二区| 秋霞国产午夜精品免费视频| 日韩精品自拍偷拍| 成人丝袜18视频在线观看| 亚洲卡通动漫在线| 欧美肥大bbwbbw高潮| 日韩在线一区二区| 国产亚洲美州欧州综合国| 91影院在线观看| 肉肉av福利一精品导航| 久久蜜桃一区二区| av男人天堂一区| 午夜久久福利影院| 久久久777精品电影网影网 | 国产精品一区二区不卡| 国产精品高潮呻吟久久| 欧美日韩视频在线观看一区二区三区| 日本美女一区二区三区视频| 欧美国产精品v| 色婷婷综合久色| 久久99精品久久久久久动态图| 国产日韩欧美精品电影三级在线| 色婷婷综合五月| 狠狠色狠狠色综合系列| 亚洲欧洲av色图| 精品久久五月天| 91在线观看免费视频| 蜜臀av一区二区在线免费观看| 国产性做久久久久久| 欧美在线不卡一区| 粉嫩13p一区二区三区| 日韩国产精品久久久| 一区在线中文字幕| 精品国产成人在线影院| 欧美在线不卡视频| 99久久精品国产精品久久| 另类小说视频一区二区| 亚洲成av人片一区二区三区| 国产精品婷婷午夜在线观看| 精品国产一区二区精华| 欧美福利视频导航| 91久久精品国产91性色tv| 成人一区在线看| 精品视频色一区| proumb性欧美在线观看| 久久99精品久久久久久国产越南| 亚洲国产日韩综合久久精品| 中文一区在线播放| 久久久久久免费毛片精品| 欧美日韩一区在线| 色哟哟国产精品免费观看| 国产**成人网毛片九色| 国产乱子轮精品视频| 久久国产精品99精品国产| 午夜私人影院久久久久| 亚洲午夜一二三区视频| 亚洲人吸女人奶水| 自拍偷拍欧美激情| 中文字幕在线观看不卡视频| 欧美国产精品一区二区| 国产视频一区二区三区在线观看| 精品欧美乱码久久久久久1区2区| 91麻豆精品91久久久久同性| 欧美日韩一级大片网址| 欧美日韩另类一区| 欧美夫妻性生活| 亚洲天堂2016| 国产精品福利电影一区二区三区四区| 国产日产亚洲精品系列| 中文字幕不卡一区| 亚洲欧美日韩国产一区二区三区| 亚洲视频一区二区免费在线观看| 国产精品女主播av| 一区二区三区日本| 亚洲高清视频的网址| 日韩电影在线观看电影| 国产中文一区二区三区| 国产精品18久久久久久久网站| 国产一区二区三区免费播放 | 国产精品久久久久久久久免费桃花 | 99久久国产综合精品女不卡 | 精品一区二区三区久久| 国产一区二区三区| 北条麻妃一区二区三区| 色综合天天综合网国产成人综合天| 久久久久久久久久看片| 国产精品不卡一区| 亚洲欧美自拍偷拍| 亚洲国产一二三| 免费在线一区观看| 国产高清不卡一区| 色吊一区二区三区| 欧美日韩电影一区| 久久久精品综合| 伊人一区二区三区| 奇米精品一区二区三区在线观看| 精品伊人久久久久7777人| 成人免费av在线| 欧美男男青年gay1069videost| 日韩精品一区二区三区视频在线观看| 久久久午夜精品理论片中文字幕| 17c精品麻豆一区二区免费| 日韩av不卡在线观看| 粉嫩在线一区二区三区视频| 在线观看区一区二| 精品国产麻豆免费人成网站| 亚洲欧美电影一区二区| 美腿丝袜在线亚洲一区| 不卡欧美aaaaa| 欧美精品1区2区3区| 国产精品国产三级国产有无不卡 | 欧美色图免费看| 亚洲精品一区二区精华| 亚洲人成在线播放网站岛国| 青青草原综合久久大伊人精品 | 亚洲欧洲一区二区在线播放| 三级欧美韩日大片在线看| 日韩视频免费观看高清完整版在线观看 | 欧美三级资源在线| 中文字幕精品一区| 久久草av在线| 欧美少妇bbb| 亚洲欧洲国产日本综合| 精品一区二区三区在线播放| 色婷婷综合激情| 国产精品入口麻豆原神| 国内久久婷婷综合| 91精品国产综合久久小美女| 综合久久久久久久| 国产乱码一区二区三区| 欧美www视频| 亚洲二区视频在线| 在线观看日产精品| 亚洲私人影院在线观看| 国产精品一区二区你懂的| 欧美不卡一区二区三区| 亚洲mv大片欧洲mv大片精品| 色综合一个色综合| 亚洲欧洲三级电影| 粉嫩一区二区三区性色av| 久久免费看少妇高潮| 日本午夜精品视频在线观看| 在线成人小视频| 亚洲国产精品欧美一二99| 一本久久精品一区二区| 亚洲黄网站在线观看| 99久久精品费精品国产一区二区| 中文字幕成人网| www.亚洲人| 国产精品九色蝌蚪自拍| 国产亚洲欧美日韩俺去了| 国产福利电影一区二区三区|