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

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

?? rxdosccb.asm

?? dos source
?? ASM
?? 第 1 頁 / 共 2 頁
字號:
        TITLE   'ccb - cache functions for rxdos'
        PAGE 59, 132
        .LALL

        ;''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''';
        ;  CCB Cache Manager for RxDOS                                  ;
        ;...............................................................;

        ;''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''';
        ;  Real Time Dos                                                ;
        ;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -;
        ;                                                               ;
        ;  This material  was created as a published version  of a DOS  ;
        ;  equivalent product.   This program  logically  functions in  ;
        ;  the same way as  MSDOS functions and it  is  internal  data  ;
        ;  structure compliant with MSDOS 6.0                           ;
        ;                                                               ;
        ;  This product is distributed  AS IS and contains no warranty  ;
        ;  whatsoever,   including  warranty  of   merchantability  or  ;
        ;  fitness for a particular purpose.                            ;
        ;                                                               ;
        ;                                                               ;
        ;  (c) Copyright 1990, 1997. Api Software and Mike Podanoffsky  ;
        ;      All Rights Reserved Worldwide.                           ;
        ;                                                               ;
        ;  This product is protected under copyright laws and  may not  ;
        ;  be reproduced  in whole  or in part, in any form  or media,  ;
        ;  included but not limited to source listing, facsimile, data  ;
        ;  transmission, cd-rom, or  floppy disk without the expressed  ;
        ;  written consent of the author.                               ;
        ;                                                               ;
        ;  License  for  distribution  for commercial  use  or  resale  ;
        ;  required from:                                               ;
        ;                                                               ;
        ;  Api Software                                                 ;
        ;  12 South Walker Street                                       ;
        ;  Lowell,  MA   01851                                          ;
        ;                                                               ;
        ;  internet: mikep@world.std.com                                ;
        ;                                                               ;
        ;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -;
        ;  Compile with MASM 5.1                                        ;
        ;...............................................................;

        include rxdosmac.asm
        include rxdosdef.asm

RxDOS   SEGMENT PARA PUBLIC 'CODE'
        assume cs:RxDOS, ds:RxDOS, es:RxDOS, ss:RxDOS

        ;''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''';
        ;  Buffer Management                                            ;
        ;...............................................................;

        public CCBChanged
        public invalidateBuffers
        public linkBegCCB
        public locateCCBPHeader
        public readBuffer
        public readSelBuffer
        public SelBuffer
        public unlinkCCB
        public updateAllChangedCCBBuffers
        public updateCCB
        public updateChangedCCB
        public updateDriveBuffers

        extrn DevRead                           : near
        extrn DevWrite                          : near
        extrn getAddrDPB                        : near
        extrn _RxDOS_BufferList                 : near
        extrn _RxDOS_pCDS                       : dword
        extrn _DebugInterruptTrap               : near

        ;''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''';
        ;  Selected Buffer                                              ;
        ;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -;
        ;                                                               ;
        ;  Input:                                                       ;
        ;   ax     drive                                                ;
        ;   cx:dx  sector to read                                       ;
        ;                                                               ;
        ;  Output:                                                      ;
        ;   es:di  pointer to selected buffer                           ;
        ;   nz     buffer contains valid data                           ;
        ;          all registers preserved                              ;
        ;...............................................................;

SelBuffer:
        SaveRegisters ax, bx, cx, dx

        les di, dword ptr ss:[ _RxDOS_BufferList ]
        mov bx, -1

selBuffer_04:
        test byte ptr es:[ ccbStatus ][ di ], ( ccb_isVALID )
        jz selBuffer_08                                 ; unallocated buffer -->

        cmp byte ptr es:[ ccbDrive ][ di ], al          ; compare drives
        jnz selBuffer_08                                ; not this block, try next -->

        cmp cx, word ptr es:[ ccbLBN. _high][ di ]      ; compare logical block numbers
        jnz selBuffer_08                                ; not this block, try next -->
        cmp dx, word ptr es:[ ccbLBN. _low ][ di ]      ; compare logical block numbers
        jz selBuffer_36                                 ; buffer located -->

selBuffer_08:
        test byte ptr es:[ ccbStatus ][ di ], ( ccb_isONHOLD )
        jnz selBuffer_12                                ; if on hold, don't use -->
        mov bx, di                                      ; save last buffer address

selBuffer_12:
        mov di, word ptr es:[ ccbNext ][ di ]
        cmp di, -1
        jnz selBuffer_04
        
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
;  if could not find a matching buffer, find an empty buffer
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        mov di, bx
        cmp di, -1                                      ; buffer address available ?
        jnz selBuffer_30                                ; use the last referenced buffer -->

        les di, dword ptr ss:[ _RxDOS_BufferList ]      ; else must seatch buffers again

selBuffer_16:
        test byte ptr es:[ ccbStatus ][ di ], ( ccb_isVALID )
        jz selBuffer_32                                 ; unallocated buffer -->

        cmp word ptr es:[ ccbNext ][ di ], -1
        jz selBuffer_30                                 ; must write all, use least used -->
        mov di, word ptr es:[ ccbNext ][ di ]
        jmp selBuffer_16 

;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
;  prep returned buffer
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
selBuffer_30:
        call updateCCB                                  ; just in case update required

selBuffer_32:
        mov byte ptr es:[ ccbDrive     ][ di ], al      ; set drive
        mov word ptr es:[ ccbLBN. _high][ di ], cx      ; set logical block number
        mov word ptr es:[ ccbLBN. _low ][ di ], dx      ; set logical block number
        mov byte ptr es:[ ccbStatus    ][ di ], 00      ; clear status
        call setFlagIfDriveIsRemote                     ; sets remote flag

        push es
        push di
        call getAddrDPB                                 ; pointer to dpb
        mov dx, es                                      ; pointer was in [es:bx]

        pop di
        pop es
        mov word ptr es:[ ccbDPB. _segment ][ di ], dx
        mov word ptr es:[ ccbDPB. _pointer ][ di ], bx

selBuffer_36:
        cmp di, word ptr ss:[ _RxDOS_BufferList. _pointer ]
        jz selBuffer_38                                 ; if already at beginning -->

        call unlinkCCB                                  ; unlink CCB buffer
        call linkBegCCB                                 ; link to front of CCB chain

selBuffer_38:
        test byte ptr es:[ ccbStatus ][ di ], ( ccb_isVALID )
        RestoreRegisters dx, cx, bx, ax
        ret

        ;''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''';
        ;  Is Drive Remote                                              ;
        ;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -;
        ;                                                               ;
        ;  al      drive                                                ;
        ;  es:di   points to ccb buffer                                 ;
        ;...............................................................;

setFlagIfDriveIsRemote:
        push ax
        push di
        push es

        mov cl, sizeCDS
        mul cl                                          ; ax contains current drive
        les di, dword ptr ss:[ _RxDOS_pCDS ]            ; actual address of CDS
        add di, ax                                      ; current drive
        test word ptr es:[ _cdsFlags ][ di ], _CDS_NETWORKEDDRIVE        
        pop es
        pop di
        jz IfDriveIsRemote_12                           ; if not remote -->

        or byte ptr es:[ ccbStatus ][ di ], ( ccb_isREMOTE )

IfDriveIsRemote_12:
        pop ax
        ret

        ;''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''';
        ;  Remove CCB Buffer from Linked List                           ;
        ;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -;
        ;                                                               ;
        ;  es:di   points to ccb buffer                                 ;
        ;...............................................................;

unlinkCCB:
        pushf                                           ; save current interrupt status
        push ax
        push di
        cli                                             ; disable interrupts

        mov ax, word ptr es:[ ccbPrev ][ di ]
        mov di, word ptr es:[ ccbNext ][ di ]
        cmp ax, -1                                      ; no previous ?
        jnz unlinkCCB_06                                ; no -->
        mov word ptr ss:[ _RxDOS_BufferList. _pointer ], di  ; update beg of list if no previous

unlinkCCB_06:
        cmp di, -1                                      ; no next pointer ?
        jz unlinkCCB_08                                 ; skip removing its Prev pointer ->
        mov word ptr es:[ ccbPrev ][ di ], ax           ; next's prev fixed.

unlinkCCB_08:
        cmp ax, -1                                      ; no previous ?
        jz unlinkCCB_12                                 ; no -->
        xchg di, ax
        mov word ptr es:[ ccbNext ][ di ], ax           ; prev's next fixed.

unlinkCCB_12:
        pop di
        mov word ptr es:[ ccbPrev ][ di ], -1           ; unlink current pointers
        mov word ptr es:[ ccbNext ][ di ], -1
        pop ax
        popf                                            ; restore interrupt status
        ret

        ;''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''';
        ;  Link CCB Buffer to Beginning of List                         ;
        ;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -;
        ;                                                               ;
        ;  es:di   points to ccb buffer                                 ;
        ;...............................................................;

linkBegCCB:
        pushf                                           ; save current interrupt status
        push ax
        cli                                             ; disable interrupts

        mov ax, di
        les di, dword ptr ss:[ _RxDOS_BufferList ]
        cmp ax, di                                      ; relinking ccb buffer to beg of list ?
        jz linkBegCCB_08                                ; yes, don't do it -->

        mov word ptr es:[ ccbPrev ][ di ], ax           ; previous to orig prev

        xchg di, ax
        mov word ptr es:[ ccbNext ][ di ], ax           ; this next to old next
        mov word ptr es:[ ccbPrev ][ di ], -1           ; current no more previous
        
        mov word ptr ss:[ _RxDOS_BufferList. _pointer ], di

linkBegCCB_08:
        pop ax
        popf
        ret

        ;''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''';
        ;  Mark CCB buffer changed.                                     ;
        ;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -;
        ;                                                               ;
        ;  es:di  pointer to selected buffer                            ;
        ;...............................................................;

CCBChanged:
        or byte ptr es:[ ccbStatus ][ di ], ( ccb_isDIRTY + ccb_isVALID )
        and byte ptr es:[ ccbStatus ][ di ], NOT ( ccb_isONHOLD )
        ret

        ;''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''';

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美高清你懂得| 在线观看日韩国产| 亚洲一区二区在线播放相泽| 日韩欧美国产一二三区| 99精品视频中文字幕| 麻豆传媒一区二区三区| 一区二区久久久久| 欧美极品美女视频| 精品福利二区三区| 88在线观看91蜜桃国自产| 91啪亚洲精品| 大胆亚洲人体视频| 韩国av一区二区三区| 五月天一区二区| 亚洲精品免费在线观看| 日本一区二区综合亚洲| 日韩一区二区电影网| 欧美亚洲综合另类| 91视频91自| 成人av网在线| 成人av在线影院| 国产成人高清视频| 国产乱码精品一区二区三| 奇米色777欧美一区二区| 亚洲美女淫视频| 亚洲视频中文字幕| 国产精品麻豆视频| 国产欧美一区二区三区在线老狼| 欧美tickle裸体挠脚心vk| 777午夜精品免费视频| 欧美性受xxxx| 欧美午夜精品一区二区三区| 色88888久久久久久影院按摩| 91在线一区二区三区| 成熟亚洲日本毛茸茸凸凹| 国产a久久麻豆| 成人福利视频网站| 99视频热这里只有精品免费| eeuss鲁一区二区三区| av在线不卡免费看| 色999日韩国产欧美一区二区| 一本到高清视频免费精品| 99精品视频免费在线观看| 色综合天天在线| 欧美午夜电影在线播放| 91精品免费在线观看| 欧美大片在线观看一区| 2023国产一二三区日本精品2022| 精品剧情v国产在线观看在线| 精品福利av导航| 中文字幕欧美日本乱码一线二线| 国产精品国产三级国产普通话三级| 国产欧美日韩精品一区| 中文字幕一区二区三区不卡| 国产精品久久99| 亚洲综合久久久| 麻豆精品视频在线观看| 国产一区二区免费在线| 成人高清视频在线| 欧美日韩一区三区| 欧美成va人片在线观看| 国产欧美一区二区三区在线老狼| 日韩美女视频一区二区| 亚洲成a天堂v人片| 麻豆91精品91久久久的内涵| 国产精品66部| 色老汉av一区二区三区| 91精品国产综合久久久久久久| 亚洲精品在线网站| 亚洲欧美激情一区二区| 青青草原综合久久大伊人精品| 韩国在线一区二区| 99re热这里只有精品免费视频 | 国产精品一区免费视频| av毛片久久久久**hd| 精品视频全国免费看| 2014亚洲片线观看视频免费| 中文字幕在线观看一区| 亚洲成精国产精品女| 国产大陆亚洲精品国产| 欧洲精品一区二区| 精品国产乱码久久久久久牛牛| 国产精品成人免费在线| 蜜臀久久99精品久久久久宅男| 成人福利视频网站| 日韩女优视频免费观看| 亚洲精品视频一区二区| 精品夜夜嗨av一区二区三区| 色综合网色综合| 久久久久久久久久久久久女国产乱| 亚洲精品国产a久久久久久| 精品一区二区三区久久| 91丨porny丨国产| 2021久久国产精品不只是精品| 亚洲综合自拍偷拍| 国产成人精品综合在线观看| 欧美人狂配大交3d怪物一区| 中文字幕一区二区三区四区| 精品一区二区三区蜜桃| 91亚洲资源网| 精品91自产拍在线观看一区| 亚洲三级视频在线观看| 麻豆精品视频在线观看免费| 91免费视频网址| 国产欧美视频一区二区三区| 午夜电影一区二区三区| 99久久久免费精品国产一区二区| 日韩欧美国产一区二区在线播放| 亚洲国产视频a| 成人av在线一区二区| 久久嫩草精品久久久精品| 亚洲不卡在线观看| 色先锋资源久久综合| 国产无人区一区二区三区| 久久国产精品露脸对白| 欧美军同video69gay| 一区二区三区在线高清| 99视频精品全部免费在线| 国产欧美日韩在线观看| 激情另类小说区图片区视频区| 91精品国产乱| 午夜精品成人在线视频| 一本色道亚洲精品aⅴ| 国产精品传媒视频| 国产成人啪午夜精品网站男同| 日韩丝袜美女视频| 琪琪一区二区三区| 日韩欧美资源站| 免费成人美女在线观看| 日韩亚洲欧美高清| 九九精品视频在线看| 亚洲精品一区二区在线观看| 美日韩黄色大片| 欧美电影免费观看完整版| 久久精品国产99国产| 精品国产一区二区三区忘忧草| 久久电影国产免费久久电影| 日韩欧美一区中文| 久久国产综合精品| 26uuu另类欧美| 国产suv精品一区二区6| 中文字幕精品综合| 99国产精品久| 亚洲电影在线免费观看| 在线91免费看| 韩国女主播成人在线| 久久免费美女视频| 成人国产电影网| 一区二区三区免费| 欧美人狂配大交3d怪物一区 | 蜜臀国产一区二区三区在线播放| 日韩午夜在线影院| 国产乱子伦视频一区二区三区| 国产精品婷婷午夜在线观看| 色综合久久久网| 午夜精品久久久久久久久| 精品久久久久一区| 成人18视频日本| 一区二区国产盗摄色噜噜| 91精品国产一区二区三区| 国产伦精品一区二区三区在线观看| 国产精品天美传媒沈樵| 欧美中文字幕一区二区三区亚洲| 秋霞国产午夜精品免费视频| 国产亚洲成av人在线观看导航| 97aⅴ精品视频一二三区| 午夜影院久久久| 久久久噜噜噜久久中文字幕色伊伊 | 国产九色精品成人porny| 中文字幕一区二区三区不卡| 欧美视频一区二区三区| 激情文学综合丁香| 一区二区在线观看免费| 日韩欧美一级二级三级久久久| 国产成人在线看| 亚洲成av人片在线观看无码| 久久久久久久久伊人| 欧美偷拍一区二区| 国产福利一区二区| 亚洲国产精品尤物yw在线观看| 欧美精品一区二区在线观看| 91蝌蚪porny成人天涯| 久久精品免费看| 亚洲一二三级电影| 欧美激情中文字幕| 日韩欧美视频一区| 色婷婷综合五月| 国产福利精品一区二区| 丝袜诱惑亚洲看片| 亚洲欧洲美洲综合色网| 26uuu色噜噜精品一区二区| 欧美午夜电影在线播放| 成人app下载| 九九精品视频在线看| 亚洲大片精品永久免费| 国产精品久久看| 欧美成人伊人久久综合网| 在线观看亚洲a| www.日韩av| 国产精品91xxx|