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

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

?? rxdosfat.asm

?? dos source
?? ASM
?? 第 1 頁 / 共 4 頁
字號:
AllocateInitCluster_12:
        getarg ax, _drive
        getarg dx, _cluster
        restoreRegisters bx, si
        Return

        ;''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''';
        ;  Append A Cluster                                             ;
        ;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -;
        ;                                                               ;
        ;  Input:                                                       ;
        ;   ax     drive                                                ;
        ;   dx     cluster to append                                    ;
        ;                                                               ;
        ;  Output:                                                      ;
        ;   ax     drive                                                ;
        ;   dx     new cluster value                                    ;
        ;...............................................................;

AppendCluster:

        Entry
        def _drive, ax
        def _cluster, dx

        cmp dx, 341
        jc AppendCluster_06
        nop

;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
;  allocate a free cluster / sector
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

AppendCluster_06:
        push bx
        call AllocateCluster                            ; allocate a cluster
        jc appendCluster_08                             ; if error -->

        push dx                                         ; allocated cluster
        mov cx, dx                                      ; use it to link to prev cluster
        getarg dx, _cluster
        call updateClusterValue                         ; update cluster value
        pop dx                                          ; restore allocated cluster
        or dx, dx

appendCluster_08:
        pop bx
        Return

        ;''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''';
        ;  Read Random Buffer FAT File                                  ;
        ;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -;
        ;                                                               ;
        ;  Input:                                                       ;
        ;   ss:bx  fat access control block                             ;
        ;                                                               ;
        ;  Output:                                                      ;
        ;   es:bx  pointer in block buffer to data                      ;
        ;   cx     remaining bytes in block                             ;
        ;   zr     means end of file or wrong address                   ;
        ;...............................................................;

_FATReadRandom:

        Entry
        ddef _accessControl, ss, bx
        ddef _reqOffset
        def  _bytesPerCluster
        ddef _DPBPointer
        ddef _BufferAddress

        saveRegisters ds, di, si, dx, ax
        and word ptr [ diskAcOptions ][ bx ], NOT (DISKAC_RESULT_READMULTIPLESECTORS)

        mov ax, word ptr [ diskAcDrive ][ bx ]
        call getAddrDPB                                 ; (es:bx) Device Parameter Block
        stordarg _DPBPointer, es, bx
        mov cx, 0000                                    ; say none
        ifc _FATReadRandom_Return                       ; if error, exit -->

;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
;  if request is before start of buffer
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        setDS ss
        mov bx, word ptr [ _accessControl. _pointer ][ bp ]
        mov ax, word ptr [ diskAcPosition. _low  ][ bx ]
        mov dx, word ptr [ diskAcPosition. _high ][ bx ]
        stordarg _reqOffset, dx, ax

        sub ax, word ptr [ diskAcOffAtBegCluster. _low  ][ bx ]        
        sbb dx, word ptr [ diskAcOffAtBegCluster. _high ][ bx ]
        jge _FATReadRandom_16

_FATReadRandom_08:
        xor ax, ax
        mov word ptr [ diskAcOffAtBegBuffer. _low  ][ bx ], ax
        mov word ptr [ diskAcOffAtBegBuffer. _high ][ bx ], ax
        mov word ptr [ diskAcOffAtBegCluster. _low  ][ bx ], ax
        mov word ptr [ diskAcOffAtBegCluster. _high ][ bx ], ax
        mov word ptr [ diskAcCurCluster ][ bx ], ax

;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
;  locate starting cluster and sector
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_FATReadRandom_16:
        cmp word ptr [ diskAcCurCluster ][ bx ], 0000
        jnz _FATReadRandom_18
        mov ax, word ptr [ diskAcBegCluster ][ bx ]
        mov word ptr [ diskAcCurCluster ][ bx ], ax

_FATReadRandom_18:
        getdarg es, si, _DPBPointer
        mov ax, word ptr es:[ _dpbBytesPerSector ][ si ]
        mov cl, byte ptr es:[ _dpbClusterSizeShift ][ si ]
        shl ax, cl                                      ; bytes per cluster

;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
;  compute a fake sector size if addressing cluster 0 (root dir).
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        cmp word ptr [ diskAcBegCluster ][ bx ], 0000
        jnz _FATReadRandom_20
        mov ax, word ptr es:[ _dpbMaxAllocRootDir ][ si ]
        mov cx, sizeDIRENTRY
        mul cx

_FATReadRandom_20:
        mov word ptr [ _bytesPerCluster ][ bp ], ax

;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
;  see if within current cluster
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_FATReadRandom_22:
        mov dx, word ptr [ _reqOffset. _low  ][ bp ]
        mov cx, word ptr [ _reqOffset. _high ][ bp ]
        sub dx, word ptr [ diskAcOffAtBegCluster. _low  ][ bx ]
        sbb cx, word ptr [ diskAcOffAtBegCluster. _high ][ bx ]
        jnz _FATReadRandom_26                           ; must continue searching forward -->
        cmp dx, word ptr [ _bytesPerCluster ][ bp ]     ; beyond cluster size ?
        jc _FATReadRandom_32                            ; no, current cluster is ok -->

_FATReadRandom_26:
        mov ax, word ptr [ diskAcDrive ][ bx ]
        mov dx, word ptr [ diskAcCurCluster ][ bx ]
        or dx, dx                                       ; zero cluster ?
        jz _FATReadRandom_28                            ; yes -->

        call getNextCluster
        jz _FATReadRandom_28                            ; if end of cluster chain -->

        mov cx, word ptr [ _bytesPerCluster  ][ bp ]
        add word ptr [ diskAcOffAtBegCluster. _low  ][ bx ], cx
        adc word ptr [ diskAcOffAtBegCluster. _high ][ bx ], 0000
        mov word ptr [ diskAcCurCluster      ][ bx ], dx
        jmp _FATReadRandom_22

_FATReadRandom_28:
        xor cx, cx
        jmp _FATReadRandom_Return 

;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
;  see if within current sector
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_FATReadRandom_32:
        lds bx, dword ptr [ _accessControl ][ bp ]
        mov ax, word ptr [ diskAcDrive ][ bx ]
        mov dx, word ptr [ diskAcCurCluster ][ bx ]
        call computeLogSectorNumber                     ; cluster -> sector number

        push cx
        push dx                                         ; save logical sector number

        mov ax, word ptr [ _reqOffset. _low  ][ bp ]
        mov dx, word ptr [ _reqOffset. _high ][ bp ]
        sub ax, word ptr [ diskAcOffAtBegCluster. _low  ][ bx ]
        sbb dx, word ptr [ diskAcOffAtBegCluster. _high ][ bx ]
        div word ptr  es:[ _dpbBytesPerSector ][ si ]

        mov cx, word ptr [ _reqOffset. _low ][ bp ]
        sub cx, dx                                      ; subtract out remainder
        mov word ptr [ diskAcOffAtBegBuffer. _low ][ bx ], cx
        mov cx, word ptr [ _reqOffset. _high ][ bp ]
        mov word ptr [ diskAcOffAtBegBuffer. _high ][ bx ], cx

        pop dx
        pop cx                                          ; restore lsn
        add dx, ax                                      ; real sector offset
        adc cx, 0

;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; read sector
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        mov ax, word ptr [ diskAcDrive ][ bx ]
        mov word ptr [ diskAcCurSector. _low ][ bx ], dx
        mov word ptr [ diskAcCurSector. _high ][ bx ], cx

        test word ptr [ _reqOffset. _low ][ bp ], (SIZESECTOR - 1)
        ifnz _FATReadRandom_52                          ; if not on sector boundary ->
        test word ptr [ diskAcOptions ][ bx ], DISKAC_READ_MULTIPLESECTORS
        ifz _FATReadRandom_52                           ; if not multiple sectors ->

;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; identify reads that will cross certain segment boundaries
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        mov es, word ptr [ diskAcBufferPtr. _segment ][ bx ]
        mov di, word ptr [ diskAcBufferPtr. _pointer ][ bx ]
        NormalizeBuffer es, di                          ; normalize buffer pointer
        stordarg _BufferAddress, es, di

        mov cx, es                                      ; 
        and cx, 00FFFh                                  ; see if segment after normalize
        cmp cx, 0FE0h                                   ; is beyond xFE0.
        jnc _FATReadRandom_52                           ; if tough segment boundary case

        mov ax, 1000h
        sub ax, cx                                      ; # paragraphs that can be read
        shl ax, 1
        shl ax, 1
        shl ax, 1
        shl ax, 1                                       ; actual bytes that can be read
        cmp ax, word ptr [ diskAcBytesToRead ][ bx ]    ; bytes to read
        jc _FATReadRandom_40                            ; cx contains max bytes
        mov ax, word ptr [ diskAcBytesToRead ][ bx ]    ; else allow max requested

;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; identify max forward scan clusters
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_FATReadRandom_40:
        xor dx, dx
        div word ptr [ _bytesPerCluster ][ bp ]         ; compute max clusters to scan

        mov cx, ax                                      ; max clusters
        mov dx, word ptr [ diskAcCurCluster ][ bx ]
        mov ax, word ptr [ diskAcDrive      ][ bx ]
        call scanClusterMap                             ; number contiguous clusters

        mov ax, word ptr [ _bytesPerCluster ][ bp ]     ; compute 
        mul cx                                          ; total bytes to read

        xor dx, dx                                      ; nothing way up here
        cmp ax, word ptr [ diskAcBytesToRead ][ bx ]    ; more than requested ?
        jc _FATReadRandom_42                            ; no -->
        mov ax, word ptr [ diskAcBytesToRead ][ bx ]    ; limit to requested size

_FATReadRandom_42:
        mov cx, SIZESECTOR                              ; into sectors
        div cx                                          ; sectors to read

        getdarg es, di, _BufferAddress
        or word ptr [ diskAcOptions ][ bx ], DISKAC_RESULT_READMULTIPLESECTORS
        mov dx, word ptr [ diskAcCurSector. _low ][ bx ]
        mov cx, word ptr [ diskAcCurSector. _high ][ bx ]
        mov bx, word ptr [ diskAcDrive ][ bx ]
        xchg ax, bx
        call DevRead

        mov ax, SIZESECTOR                              ; sector size
        mul cx                                          ; actual bytes read
        mov cx, ax                                      ; actual bytes read
        getdarg es, di, _BufferAddress
        jmp short _FATReadRandom_Return                 ; return bytes read

;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
;  read sector (unoptimized fast read )
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_FATReadRandom_52:
        mov ax, word ptr [ diskAcDrive ][ bx ]
        mov dx, word ptr [ diskAcCurSector. _low ][ bx ]
        mov cx, word ptr [ diskAcCurSector. _high ][ bx ]
        call ReadBuffer
        mov ax, word ptr [ diskAcOptions ][ bx ]
        or byte ptr es:[ ccbStatus ][ di ], al          ; type of block

        lea di, offset ccbData [ di ]                   ; point to data 
        mov word ptr [ diskAcBufferPtr. _segment ][ bx ], es
        mov word ptr [ diskAcBufferPtr. _pointer ][ bx ], di

;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
;  return pointer
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_FATReadRandom_60:
        lds bx, dword ptr [ _accessControl ][ bp ]
        les si, dword ptr [ _DPBPointer    ][ bp ]
        mov cx, word ptr es:[ _dpbBytesPerSector ][ si ]

        mov ax, word ptr [ _reqOffset. _low  ][ bp ]
        mov dx, word ptr [ _reqOffset. _high ][ bp ]
        sub ax, word ptr [ diskAcOffAtBegBuffer. _low  ][ bx ]
        sbb dx, word ptr [ diskAcOffAtBegBuffer. _high ][ bx ]

        les bx, dword ptr [ diskAcBufferPtr ][ bx ]
        add bx, ax                                      ; offset into buffer
        sub cx, ax                                      ; bytes remaining in buffer

;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
;  return
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_FATReadRandom_Return:
        restoreRegisters ax, dx, si, di, ds
        Return

RxDOS   ENDS
        END

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩一级黄色大片| 欧美一区二区三区在线视频| 首页综合国产亚洲丝袜| 一区二区三区蜜桃| 亚洲午夜视频在线观看| 亚洲在线一区二区三区| 亚洲精品高清在线| 亚洲午夜久久久久久久久电影院| 亚洲欧洲av在线| 亚洲一区视频在线观看视频| 亚洲夂夂婷婷色拍ww47| 日韩电影在线观看一区| 视频一区二区三区在线| 日韩激情视频网站| 国产米奇在线777精品观看| 丁香婷婷深情五月亚洲| 色综合天天综合狠狠| 色综合久久久网| 欧美午夜在线一二页| 欧美一区二区啪啪| 国产午夜亚洲精品不卡| 中文字幕一区二区三区视频| 一区二区三区不卡在线观看| 蜜臀av亚洲一区中文字幕| 国产一区二区三区综合| av成人免费在线观看| 欧美日韩国产综合久久 | 国产精品福利一区二区| 中文字幕色av一区二区三区| 亚洲v日本v欧美v久久精品| 婷婷亚洲久悠悠色悠在线播放| 麻豆精品久久久| 成人黄色在线网站| 欧美性欧美巨大黑白大战| 欧美一区二区高清| 国产精品久久国产精麻豆99网站| 亚洲午夜久久久久| 成人黄页毛片网站| 日韩三级视频中文字幕| 中文字幕在线观看一区二区| 天天爽夜夜爽夜夜爽精品视频| 国产米奇在线777精品观看| 欧美性生活大片视频| 亚洲精品在线电影| 亚洲午夜激情网页| 成人动漫精品一区二区| 欧美美女bb生活片| 亚洲同性gay激情无套| 国产一区二区在线免费观看| 欧美在线一二三| 国产精品毛片久久久久久| 日韩精品久久久久久| 一本色道a无线码一区v| 欧美激情在线一区二区三区| 三级不卡在线观看| 91久久线看在观草草青青| 国产三级精品视频| 免费成人在线网站| av电影一区二区| 国产日韩av一区| 久久国产精品99久久久久久老狼| 欧美吞精做爰啪啪高潮| 国产精品女主播在线观看| 极品少妇xxxx偷拍精品少妇| 正在播放一区二区| 天天色综合天天| 欧美日韩国产精品自在自线| 亚洲免费在线看| 99国产精品久久久久久久久久久 | 国产日产欧美一区二区三区| 全国精品久久少妇| 欧美日韩成人一区二区| 亚洲电影在线播放| 欧美日韩大陆一区二区| 调教+趴+乳夹+国产+精品| 欧美日韩一级黄| 日本午夜一区二区| 在线电影国产精品| 青青草97国产精品免费观看 | 久久国产福利国产秒拍| 日韩精品一区二区三区视频播放| 午夜精品久久久久久久99水蜜桃 | 综合av第一页| 99视频国产精品| 亚洲黄色性网站| 欧美日本精品一区二区三区| 日韩高清一区二区| 2020国产精品| 国产a区久久久| 中文字幕亚洲视频| 欧美在线视频日韩| 老司机精品视频线观看86| 久久色在线视频| 97se亚洲国产综合自在线| 亚洲影视资源网| 欧美一区二区三区视频在线| 久久不见久久见免费视频1| 国产色一区二区| 色婷婷亚洲婷婷| 免费在线一区观看| 国产精品嫩草影院av蜜臀| 91精品福利视频| 日本va欧美va瓶| 国产精品久久毛片av大全日韩| 色呦呦一区二区三区| 日本不卡一区二区三区高清视频| 日韩欧美国产小视频| av激情成人网| 激情伊人五月天久久综合| 亚洲色图清纯唯美| 欧美tickling网站挠脚心| 91视频在线观看免费| 美国欧美日韩国产在线播放| 国产精品成人一区二区艾草| 91精品国产福利| 97久久超碰精品国产| 黄一区二区三区| 午夜精品福利视频网站| 国产亚洲成aⅴ人片在线观看| 欧美日韩综合不卡| 成人午夜免费av| 免费成人av资源网| 亚洲精品国产视频| 国产日韩欧美不卡| 91精品国产一区二区三区| 色婷婷综合在线| 成人激情电影免费在线观看| 日本欧美久久久久免费播放网| 国产精品美女久久久久高潮| 日韩一级二级三级| 在线观看网站黄不卡| 成人精品在线视频观看| 激情综合色综合久久| 石原莉奈在线亚洲二区| 一级做a爱片久久| 中文字幕一区二区三区av| 久久精品一区二区三区不卡牛牛| 91精品国产欧美一区二区成人| 在线观看亚洲a| 91久久久免费一区二区| 99久久国产综合精品色伊| 国产成人av福利| 国产在线日韩欧美| 国产一区999| 国产美女视频91| 国产一区二区三区电影在线观看| 青青草原综合久久大伊人精品优势 | 在线亚洲欧美专区二区| 成人深夜视频在线观看| 国产精品一二一区| 国产91丝袜在线播放| 国产成人在线视频播放| 国产精品99久久久久久久女警 | aa级大片欧美| av电影在线观看完整版一区二区| 国产超碰在线一区| 国产精品一二三四五| 高清不卡在线观看av| 国产精品一区二区91| 国产成人亚洲综合色影视| 成人激情校园春色| www.日韩av| 欧美日韩一区中文字幕| 欧美日韩在线三区| 欧美一区二区三区小说| 精品成人免费观看| 亚洲国产精品成人综合| 1000精品久久久久久久久| 亚洲男帅同性gay1069| 亚洲综合在线视频| 奇米亚洲午夜久久精品| 久久不见久久见免费视频7| 国产精品99久久久久久宅男| 91免费看`日韩一区二区| 欧美日韩一级大片网址| 日韩视频一区二区在线观看| 久久精品人人做| 一区二区不卡在线播放 | 欧美日本在线播放| 精品国产人成亚洲区| 国产视频一区不卡| 亚洲国产aⅴ成人精品无吗| 日韩成人一区二区| 国产精品一区不卡| 欧美日韩一区二区不卡| 久久精品亚洲国产奇米99| 日韩一区日韩二区| 欧美aaa在线| 色综合久久久久| 欧美成人三级电影在线| 亚洲天堂免费看| 九一九一国产精品| 91极品视觉盛宴| 国产亚洲欧美日韩俺去了| 亚洲婷婷国产精品电影人久久| 久久精品噜噜噜成人88aⅴ | 亚洲大片在线观看| 国产精品亚洲一区二区三区在线| 91精彩视频在线| 国产精品久久久久四虎|