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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? fat32.inc

?? MenuetOS是一個(gè)用匯編開(kāi)發(fā)的32/64位PC操作系統(tǒng)
?? INC
?? 第 1 頁(yè) / 共 4 頁(yè)
字號(hào):
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;                                                                 ;;
;;  FAT32.INC                                                      ;;
;;                                                                 ;;
;;  FAT32 functions for MenuetOS                                   ;;
;;                                                                 ;;
;;  Copyright 2002 Paolo Minazzi, paolo.minazzi@inwind.it          ;;
;;                                                                 ;;
;;  See file COPYING for details                                   ;;
;;                                                                 ;;
;;  10.9.2004  Fat16 file system - Mario79                         ;;
;;  06.9.2004  Fix free space by Mario79 added - MH                ;;
;;  24.5.2004  Write back buffer for File_write - VT               ;;
;;  20.5.2004  File_read function to work with syscall 58 - VT     ;;
;;  30.3.2004  Error parameters at function return - VT            ;;
;;  01.5.2002  Bugfix in device write - VT                         ;;
;;  20.5.2002  Hd status check - VT                                ;;
;;  29.6.2002  Improved fat32 verification - VT                    ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


;       CLUSTER[0]  CLUSTER[1]  CLUSTER[2] CLUSTER[3]
;
;###    ######## -->######## -->########   ########
;#2#--> #      # |  #      # |  #      #   #      #
;###    #      # |  #      # |  #      #   #      #
;       #      # |  #      # |  #      #   #      #
;       #      # |  #      # |  #      #   #      #
;       #      # |  #      # |  #      #   #      #          CLUSTER
;       #      # |  #      # |  #      #   #      #
;       #      # |  #      # |  #      #   #      #
;       #      # |  #      # |  #      #   #      #
;       ######## |  ######## |  ########   ########
;                |           |
;                |           ------------------
;                |                            |
;                --------------------         |
;                                   |         |
;      ########    ########    ########   ########
;      # xxxx #    # xxxx #    #   3  #   #   4  #
;      ########    ########    ########   ########          FAT
;
;       FAT[0]       FAT[1]      FAT[2]    FAT[3]
;

cache_max equ 1000

RESERVED_SECTOR:     dd 0x20
PARTITION_START:     dd 0x3f
FAT32_SIZE:          dd 0x1f3a
NUMBER_OF_FATS:      dd 0x2
SECTOR_PER_CLUSTER:  dd 0x8
ROOT_CLUSTER:        dd 2
buffer:              times 64 dd 0,0
cluster:             dd 0
cluster1:            dd 0
valid_fat:           db 0
PARTITION_SIZE:      dd 0
PARTITION_END:       dd 0

hd_error             dd 0
hd_setup             dd 0

;***********************
;*         Start       *
;* Mario79 edited code *
;*  correct free mem   *
;*     change 1.1      *
;***********************
FILE_SIZE:           dd 0
ADR_FSINFO:          dd 0
change_mem           db 0
old_size_file:       dd 0
;***********************
;*         End         *
;* Mario79 edited code *
;*  correct free mem   *
;*     change 1.1      *
;***********************

;***********************
;*         Start       *
;* Mario79 edited code *
;*        Fat16        *
;*     change 1.1      *
;***********************
fs_type              dd 0
file_or_directory    dd 0
analyze_f16          db 0
correct_fat16        dd 0
;***********************
;*         End         *
;* Mario79 edited code *
;*        Fat16        *
;*     change 1.1      *
;***********************

reserve_hd1:

    push  eax
    mov   eax,[0x3000]
    imul  eax,32
    add   eax,0x3000
    mov   eax,[eax+4]
    mov   [hd1_status],eax
    pop   eax

    ret

clear_hd_cache:

    pusha
    mov   edi,0x600000
    mov   ecx,65535
    mov   eax,0
    cld
    rep   stosb
    popa

    ret


set_FAT32_variables:

    cli
    cmp   [hd1_status],0
    je    set_fat32_l1

    sti
    call  change_task
    jmp   set_FAT32_variables

  set_fat32_l1:

    call  reserve_hd1

    sti

    call  clear_hd_cache

    cmp   dword [hdpos],0
    je    problem_hd_or_partition_or_fat32_ret

    push  eax
    push  ebx

    xor   eax,eax                        ; Read MBR
    mov   ebx,buffer
    call  hd_read

    cmp   dword [fat32part],0
    jnz   hd_and_partition_ok

problem_hd_or_partition_or_fat32:

    pop   ebx
    pop   eax

problem_hd_or_partition_or_fat32_ret:

    mov   [valid_fat],byte 0
    mov   [hd1_status],0 ; free

    ret

hd_and_partition_ok:

    mov   ecx,[fat32part]
    mov   eax,0
    mov   ebx,buffer+0x1be+8  -16
  hdapl1:
    add   ebx,16
    add   eax,[ebx]
    loop  hdapl1

    mov   [PARTITION_START],eax
    mov   ebx,[ebx+4]
    mov   [PARTITION_SIZE],ebx

    mov   [hd_setup],1
    mov   ebx,buffer
    call  hd_read ;_new        ; Read boot sector of partition
    mov   [hd_setup],0

    cmp   [ebx+0x53],dword 'AT32'
    ; jnz  problem_hd_or_partition_or_fat32
    jnz   problem_hd_or_partition_or_fat32_1

    mov   [valid_fat],byte 1
    movzx eax,word [ebx+0xe]
    mov   [RESERVED_SECTOR],eax
    mov   eax,[ebx+0x24]
    mov   [FAT32_SIZE],eax
    movzx eax,byte [ebx+0x10]
    mov   [NUMBER_OF_FATS],eax
    movzx eax,byte [ebx+0xd]
    mov   [SECTOR_PER_CLUSTER],eax
    mov   eax,[ebx+44]
    mov   [ROOT_CLUSTER],eax
    mov   eax,[PARTITION_START]
    add   eax,[PARTITION_SIZE]
    dec   eax
    mov   [PARTITION_END],eax
    pop   ebx
    pop   eax

;    mov [hd1_status],0   ; free
;    ret
;***********************
;*         Start       *
;* Mario79 edited code *
;*        Fat16        *
;*     change 1.2      *
;***********************

    mov   [fs_type],1      ; 1 -Fat32
    mov   [hd1_status],0   ; free
    ret

problem_hd_or_partition_or_fat32_1:

    cmp   [ebx+55],dword 'AT16'
    je    par_fat16
    jmp   problem_hd_or_partition_or_fat32

par_fat16:

    mov   [valid_fat],byte 1
    movzx eax,word [ebx+0xe]
    mov   [RESERVED_SECTOR],eax
    movzx eax,word [ebx+0x16]
    mov   [FAT32_SIZE],eax
    movzx eax,byte [ebx+0x10]
    mov   [NUMBER_OF_FATS],eax
    movzx eax,byte [ebx+0xd]
    mov   [SECTOR_PER_CLUSTER],eax

    xor   eax,eax
    mov   [ROOT_CLUSTER],eax
    mov   eax,[PARTITION_START]
    add   eax,[PARTITION_SIZE]
    dec   eax
    mov   [PARTITION_END],eax

    mov   eax,[SECTOR_PER_CLUSTER]
    shl   eax,1
    mov   ebx,32
    sub   ebx,eax
    mov   [correct_fat16],ebx

    pop   ebx
    pop   eax

    mov   [fs_type],2      ; 2 - Fat16
    mov   [hd1_status],0   ; Free
    ret

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

set_FAT:
;--------------------------------
; set_FAT
;
; input :  EAX = #block
;          EDX = value to save
; output:  nothing
;--------------------------------

    push  eax  ; [esp+16]
    push  ebx  ; [esp+12]
    push  ecx  ; [esp+8]
    push  edx  ; [esp+4]
    push  esi  ; [esp]

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

    cmp [fs_type],1
    je correct3_11
    shl eax,1
    jmp  correct3_12
correct3_11:
    shl eax,2
correct3_12:
;***********************
;*         End         *
;* Mario79 edited code *
;*        Fat16        *
;*     change 1.3      *
;***********************

    xor edx,edx
    mov ebx,512
    div ebx
    mov esi,edx

    add eax,[RESERVED_SECTOR]
    add eax,[PARTITION_START]
    mov ebx,buffer

    mov ecx,[NUMBER_OF_FATS]
    mov edx,[esp+4]

set_an_other_FAT:

    call hd_read ;_new

    cmp  [f_del],1
    je   fat_zero

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

    cmp [fs_type],1
    je correct3_11_1
    cmp  [buffer+esi],word 0
    je   fat_zero
    jmp  correct3_12_1
correct3_11_1:
   cmp  [buffer+esi],dword 0
   je   fat_zero
correct3_12_1:
   mov  [8*0x100000],dword 0xffffff
   jmp  fat_nonzero
fat_zero:
  cmp [fs_type],1
  je correct3_13_3
   mov [buffer+esi],dx
   jmp correct3_13_4
correct3_13_3:
   mov [buffer+esi],edx
correct3_13_4:
;***********************
;*         End         *
;* Mario79 edited code *
;*        Fat16        *
;*     change 1.4      *
;***********************

   call hd_write_new

  fat_nonzero:

   add eax,[FAT32_SIZE]
   loop set_an_other_FAT

   pop esi
   pop edx
   pop ecx
   pop ebx
   pop eax
   ret


get_FAT:
;--------------------------------
; get_FAT
;
; input :  EAX = #block
; output:  EAX = #block
;--------------------------------
   push ebx
   push edx

;***********************
;*         Start       *
;* Mario79 edited code *
;*        Fat16        *
;*     change 1.5      *
;***********************
  cmp [fs_type],1
  je correct3_13_5
  shl eax,1
  jmp  correct3_14_1
correct3_13_5:
   shl eax,2
correct3_14_1:
;***********************
;*         End         *
;* Mario79 edited code *
;*        Fat16        *
;*     change 1.5      *
;***********************

   xor edx,edx
   mov ebx,512
   div ebx

   add eax,[RESERVED_SECTOR]
   add eax,[PARTITION_START]
   mov ebx,buffer

   call hd_read ;_new

   mov  eax,[buffer+edx]

;***********************
;*         Start       *
;* Mario79 edited code *
;*        Fat16        *
;*     change 1.6      *
;***********************
  cmp [fs_type],1
  je correct3_13_6
  and  eax,0xffff
correct3_13_6:
;***********************
;*         End         *
;* Mario79 edited code *
;*        Fat16        *
;*     change 1.6      *
;***********************

   pop edx
   pop ebx
   ret


get_FAT_cache:
;--------------------------------
; get_FAT_cache - used for reading only : internal cache
;
; input :  EAX = #block
; output:  EAX = #block
;--------------------------------
   push ebx
   push edx

;***********************
;*         Start       *
;* Mario79 edited code *
;*        Fat16        *
;*     change 1.7      *
;***********************
  cmp [fs_type],1
  je correct3_13
  shl eax,1
  jmp  correct3_14
correct3_13:
   shl eax,2
correct3_14:
;***********************
;*         End         *
;* Mario79 edited code *
;*        Fat16        *
;*     change 1.7      *
;***********************

   xor edx,edx
   mov ebx,512
   div ebx

   add eax,[RESERVED_SECTOR]
   add eax,[PARTITION_START]
   mov ebx,fat_cache

   cmp  eax,[fat_in_cache]
   je   fat_found_in_cache
   mov  [fat_in_cache],eax
   call hd_read
 fat_found_in_cache:

   mov  eax,[fat_cache+edx]

;***********************
;*         Start       *
;* Mario79 edited code *
;*        Fat16        *
;*     change 1.8      *
;***********************
  cmp [fs_type],1
  je correct3_13_1
  and  eax,0xffff
correct3_13_1:
;***********************
;*         End         *
;* Mario79 edited code *
;*        Fat16        *
;*     change 1.8      *
;***********************

   pop edx
   pop ebx
   ret


fat_in_cache dd -1
fat_cache: times 512 db 0



;find_pointer_in_FAT:
;--------------------------------
; For each item of FAT do
;   if (item read == EAX)
;     return #item
;     carry=0
;   else
;     carry=1;
;
; input :  EAX = #block
; output:  if CARRY=0 then EAX = #block
;          if CARRY=1 then EAX = distroyed
;--------------------------------
;  add eax,2
;  push eax
;  push ecx
;  push edx

;  mov ecx,[FAT32_SIZE]
;  shl ecx,9-2                 ; *512 for sector   /4 for dword
;  mov edx,2

;adr78:
;  mov eax,edx
;  call get_FAT
;  cmp eax,[esp+8]
;  je found_pointer
;  inc edx
;  loop adr78

;  pop edx
;  pop ecx
;  add esp,4
;  stc
;  ret

;found_pointer:
;  mov eax,edx
;  pop edx
;  pop ecx
;  add esp,4
;  clc
;  ret

analyze_directory:
;--------------------------------
; input  : EAX = first cluster of the directory
;          EBX = pointer to filename
; output : IF CARRY=0 EAX = sector where th file is found
;                     EBX = pointer in buffer
;                     [buffer .. buffer+511]
;                     ECX,EDX,EDI,EDI not changed
;          IF CARRY=1
;--------------------------------
   push ebx ;[esp+16]
   push ecx
   push edx
   push esi
   push edi


adr56:
   mov [cluster_tmp],eax

   mov ecx,[FAT32_SIZE]
   imul ecx,[NUMBER_OF_FATS]
   add ecx,[RESERVED_SECTOR]

;***********************
;*         Start       *
;* Mario79 edited code *
;*        Fat16        *
;*     change 1.9      *
;***********************
  cmp [fs_type],2
  je correct2_11
  sub  eax,2
correct2_11:
   imul eax,[SECTOR_PER_CLUSTER]
  cmp [fs_type],1
  je correct2_13
  cmp [file_or_directory],0
  je  correct2_13
  cmp [analyze_f16],0
  je  correct2_13
  add eax,[correct_fat16]
correct2_13:
;***********************
;*         End         *
;* Mario79 edited code *
;*        Fat16        *
;*     change 1.9      *
;***********************

   add eax,[PARTITION_START]
   add eax,ecx

   mov edx,[SECTOR_PER_CLUSTER]

new_sector_in_cluster:
   mov ebx,buffer
   call hd_read ;_new

   mov ecx,512/32

adr1_analyze:

   mov edi,[ebx+11]
   and edi,0xf
   cmp edi,0xf
   je  long_filename_data

   mov esi,[esp+16]
   mov edi,ebx
   cld
   push ecx
   mov ecx,11
   rep cmpsb
   pop ecx
   je found_file_analyze

 long_filename_data:

   add ebx,32
   loop adr1_analyze

   inc eax
   dec edx
   jne new_sector_in_cluster

   mov eax,[cluster_tmp]
   call get_FAT
   mov [cluster_tmp],eax

;***********************
;*         Start       *
;* Mario79 edited code *
;*        Fat16        *
;*     change 1.10     *
;***********************
  cmp [fs_type],2
  je  correct5_2
   cmp eax,0x0f000000
   jb  adr56
 correct6_2:

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩限制级电影在线观看| 极品美女销魂一区二区三区| 日本欧美在线看| 激情欧美一区二区| 成人精品小蝌蚪| 欧美日韩视频在线观看一区二区三区| 日韩精品一区二区三区在线| 国产视频一区在线播放| 亚洲综合偷拍欧美一区色| 麻豆精品视频在线| 91一区二区在线| 91精品国产入口在线| 欧美激情综合五月色丁香小说| 亚洲精品菠萝久久久久久久| 麻豆精品一区二区| 一本到不卡免费一区二区| 日韩欧美另类在线| 亚洲欧美aⅴ...| 激情文学综合丁香| 欧美色网一区二区| 国产日韩成人精品| 亚洲成人777| av中文一区二区三区| 日韩欧美激情在线| 亚洲精品成a人| 国产成人免费视频 | 亚洲精品水蜜桃| 韩国v欧美v日本v亚洲v| 欧美四级电影在线观看| 亚洲国产精品国自产拍av| 日韩av电影免费观看高清完整版 | 国产精品久久久久7777按摩| 日韩黄色一级片| 91美女片黄在线观看91美女| 欧美成人vps| 午夜精品福利一区二区蜜股av| 丁香五精品蜜臀久久久久99网站| 91精品国产综合久久精品麻豆| 一区二区在线免费观看| 国产aⅴ综合色| 26uuu亚洲综合色欧美| 午夜久久电影网| 色系网站成人免费| 国产精品毛片a∨一区二区三区| 久久国产精品99精品国产| 欧美日韩视频在线观看一区二区三区 | 一区二区三区四区在线播放 | 综合激情网...| 国产传媒一区在线| 欧美成人伊人久久综合网| 亚洲成人动漫一区| 色婷婷av一区| 国产精品传媒在线| 成人精品视频一区二区三区| 国产丝袜美腿一区二区三区| 国产永久精品大片wwwapp| 日韩视频在线观看一区二区| 日韩高清在线一区| 欧美日韩三级在线| 亚洲成人资源网| 欧美综合一区二区| 一个色综合av| 在线影院国内精品| 亚洲一区二区三区视频在线播放 | 亚洲成人av免费| 欧美日韩免费一区二区三区| 亚洲综合色在线| 欧美综合欧美视频| 午夜国产不卡在线观看视频| 欧美日韩久久一区二区| 一区二区在线观看av| 在线欧美小视频| 亚洲小少妇裸体bbw| 精品视频在线免费观看| 亚洲成精国产精品女| 欧美视频一区二区三区在线观看| 亚洲大型综合色站| 欧美一区二区视频在线观看| 蜜臀久久久久久久| 欧美mv日韩mv| 国产成人在线看| 亚洲欧洲在线观看av| 色婷婷综合久久| 亚洲五月六月丁香激情| 在线不卡中文字幕播放| 美国十次了思思久久精品导航| 亚洲精品一区二区三区四区高清| 国产精品综合在线视频| 亚洲国产精华液网站w| av不卡一区二区三区| 一区二区三区四区在线| 欧美日韩一区二区三区在线看 | 久久久蜜桃精品| www.久久精品| 欧美性一区二区| 亚洲欧美另类久久久精品| 一本色道亚洲精品aⅴ| 亚洲制服欧美中文字幕中文字幕| 欧美高清视频在线高清观看mv色露露十八 | 国产精品自拍网站| 国产精品初高中害羞小美女文| 色视频一区二区| 日韩av一区二区三区四区| 精品美女一区二区| www.欧美日韩国产在线| 亚洲高清免费视频| 久久综合九色综合97_久久久| 99国产欧美另类久久久精品| 日韩综合一区二区| 久久精品人人做人人综合| 色综合天天综合在线视频| 男男gaygay亚洲| 国产精品午夜电影| 欧美日韩一区二区欧美激情| 激情文学综合丁香| 一区二区激情小说| 欧美videos中文字幕| 99这里只有久久精品视频| 午夜精品福利视频网站| 欧美激情综合在线| 欧美久久久久久久久久| 成人动漫av在线| 日韩va欧美va亚洲va久久| 国产精品国产三级国产普通话三级| 精品视频1区2区3区| 粉嫩高潮美女一区二区三区| 婷婷中文字幕一区三区| 国产精品欧美久久久久无广告| 欧美肥妇free| 97超碰欧美中文字幕| 国内久久婷婷综合| 亚洲第一二三四区| 国产精品美女久久久久久久久| 91精品国产麻豆国产自产在线| 成人av影院在线| 久久99精品久久久久婷婷| 悠悠色在线精品| 中文字幕+乱码+中文字幕一区| 91精品国产综合久久福利| 99麻豆久久久国产精品免费优播| 久久精品国产精品青草| 一区二区三区国产| 国产亚洲欧美激情| 91麻豆精品国产自产在线观看一区 | 国产午夜精品一区二区三区视频| 欧美日韩黄色影视| 99精品在线免费| 国产酒店精品激情| 久久99蜜桃精品| 日韩制服丝袜av| 一区二区欧美国产| 一区视频在线播放| 国产农村妇女精品| 久久美女艺术照精彩视频福利播放 | 一区二区三区在线影院| 欧美激情一区二区三区| 亚洲黄色av一区| 国产精品理论在线观看| 久久久www免费人成精品| 91精品国产综合久久小美女| 欧美三级日韩三级国产三级| 91麻豆123| 91一区二区三区在线播放| 成人久久18免费网站麻豆| 国产精品77777竹菊影视小说| 久久国产福利国产秒拍| 男女男精品网站| 麻豆精品视频在线观看免费| 免费精品视频在线| 日韩精品国产精品| 三级在线观看一区二区| 午夜激情综合网| 日韩高清欧美激情| 日韩av在线播放中文字幕| 天天综合日日夜夜精品| 亚洲123区在线观看| 亚洲v中文字幕| 亚洲成av人综合在线观看| 亚洲丶国产丶欧美一区二区三区| 亚洲综合av网| 亚洲午夜在线电影| 五月激情综合色| 日产国产欧美视频一区精品| 五月天视频一区| 美女在线视频一区| 精品无码三级在线观看视频| 国产一区二区女| 成人午夜激情视频| 99久久精品免费精品国产| 99热99精品| 欧美在线不卡一区| 欧美日韩aaa| 日韩一级视频免费观看在线| 2022国产精品视频| 亚洲国产精品精华液ab| 亚洲欧美综合色| 一级特黄大欧美久久久| 日韩成人av影视| 国产精品一线二线三线精华| 国产成人一级电影|