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

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

?? card.c

?? 使用網(wǎng)絡(luò)驅(qū)動器接口標(biāo)準(zhǔn)開發(fā)的ne2000網(wǎng)卡的NT驅(qū)動.
?? C
?? 第 1 頁 / 共 5 頁
字號:
        // byte and then merge it with our first byte.
        //

        //
        // Set Count and Source address
        //
        NdisRawWritePortUchar(
            Adapter->IoPAddr + NIC_RMT_ADDR_LSB,
            LSB(PtrToUlong(TargetBuffer - 1))
        );

        NdisRawWritePortUchar(
            Adapter->IoPAddr + NIC_RMT_ADDR_MSB,
            MSB(PtrToUlong(TargetBuffer - 1))
        );

// NE2000 PCMCIA CHANGE!!!  start
        //NdisRawWritePortUchar(Adapter->IoPAddr + NIC_RMT_COUNT_LSB, 0x1);
        NdisRawWritePortUchar(Adapter->IoPAddr + NIC_RMT_COUNT_LSB, 0x2);
        NdisRawWritePortUchar(Adapter->IoPAddr + NIC_RMT_COUNT_MSB, 0x0);
// NE2000 PCMCIA CHANGE!!!  end

        //
        // Set direction (Read)
        //

        NdisRawWritePortUchar(
            Adapter->IoPAddr + NIC_COMMAND,
            CR_START | CR_PAGE0 | CR_DMA_READ
        );

// NE2000 PCMCIA CHANGE!!!  start
        //NdisRawReadPortUchar(Adapter->IoPAddr + NIC_RACK_NIC, &TmpSave);
        NdisRawReadPortUshort(Adapter->IoPAddr + NIC_RACK_NIC, &TmpShort);
        TmpSave = LSB(TmpShort);
// NE2000 PCMCIA CHANGE!!!  end

        //
        // Do Write errata as described on pages 1-143 and 1-144 of the 1992
        // LAN databook
        //

        //
        // Set Count and destination address
        //

        ReadBuffer = TargetBuffer + ((ULONG_PTR)TargetBuffer & 1);

        OldAddr = NewAddr = (USHORT)(ReadBuffer);

//      NdisRawWritePortUchar(Adapter->IoPAddr + NIC_COMMAND, CR_PAGE0); // robin

        NdisRawWritePortUchar(
            Adapter->IoPAddr + NIC_RMT_ADDR_LSB,
            LSB(PtrToUlong(ReadBuffer))
        );

        NdisRawWritePortUchar(
            Adapter->IoPAddr + NIC_RMT_ADDR_MSB,
            MSB(PtrToUlong(ReadBuffer))
        );

        NdisRawWritePortUchar(Adapter->IoPAddr + NIC_RMT_COUNT_LSB, 0x2);
        NdisRawWritePortUchar(Adapter->IoPAddr + NIC_RMT_COUNT_MSB, 0x0);

        //
        // Set direction (Read)
        //

        NdisRawWritePortUchar(
            Adapter->IoPAddr + NIC_COMMAND,
            CR_START | CR_PAGE0 | CR_DMA_READ
        );

        //
        // Read from port
        //

        NdisRawReadPortUshort(Adapter->IoPAddr + NIC_RACK_NIC, &TmpShort);

        //
        // Wait for addr to change
        //

        TmpShort = 0xFFFF;

        while (TmpShort != 0) {

            NdisRawReadPortUchar(
                          Adapter->IoPAddr + NIC_CRDA_LSB,
                          &Tmp
                         );

            NewAddr = Tmp;

            NdisRawReadPortUchar(
                          Adapter->IoPAddr + NIC_CRDA_MSB,
                          &Tmp
                         );

            NewAddr |= (Tmp << 8);

            if (NewAddr != OldAddr) {

                break;
            }

            NdisStallExecution(1);

            TmpShort--;

        }

        if (NewAddr == OldAddr) {

            return(FALSE);

        }

        //
        // Set Count and destination address
        //
        NdisRawWritePortUchar(
            Adapter->IoPAddr + NIC_RMT_ADDR_LSB,
            LSB(PtrToUlong(TargetBuffer - 1))
        );

        NdisRawWritePortUchar(
            Adapter->IoPAddr + NIC_RMT_ADDR_MSB,
            MSB(PtrToUlong(TargetBuffer - 1))
        );

        NdisRawWritePortUchar(Adapter->IoPAddr + NIC_RMT_COUNT_LSB, 0x2);
        NdisRawWritePortUchar(Adapter->IoPAddr + NIC_RMT_COUNT_MSB, 0x0);

        //
        // Set direction (Write)
        //

        NdisRawWritePortUchar(
            Adapter->IoPAddr + NIC_COMMAND,
            CR_START | CR_PAGE0 | CR_DMA_WRITE
        );

        //
        // It seems that the card stores words in LOW:HIGH order
        //

        NdisRawWritePortUshort(
                       Adapter->IoPAddr + NIC_RACK_NIC,
                       (USHORT)(TmpSave | ((*SourceBuffer) << 8))
                       );

        //
        // Wait for DMA to complete
        //

        Count = 0xFFFF;

        while (Count) {

            NdisRawReadPortUchar(
                          Adapter->IoPAddr + NIC_INTR_STATUS,
                          &Tmp
                         );

            if (Tmp & ISR_DMA_DONE) {

                break;

            } else {

                Count--;

                NdisStallExecution(4);

            }

        }

        SourceBuffer++;
        TargetBuffer++;
        Length--;

    }

    //
    // Do Write errata as described on pages 1-143 and 1-144 of the 1992
    // LAN databook
    //

    //
    // Set Count and destination address
    //

    ReadBuffer = TargetBuffer + ((ULONG_PTR)TargetBuffer & 1);

    OldAddr = NewAddr = (USHORT)(ReadBuffer);

//  NdisRawWritePortUchar(                              // robin
//                     Adapter->IoPAddr + NIC_COMMAND,  // robin
//                     CR_PAGE0                         // robin
//                    );                                // robin

    NdisRawWritePortUchar(
                       Adapter->IoPAddr + NIC_RMT_ADDR_LSB,
                       LSB(PtrToUlong(ReadBuffer))
                      );

    NdisRawWritePortUchar(
                       Adapter->IoPAddr + NIC_RMT_ADDR_MSB,
                       MSB(PtrToUlong(ReadBuffer))
                      );

    NdisRawWritePortUchar(
                       Adapter->IoPAddr + NIC_RMT_COUNT_LSB,
                       0x2
                      );

    NdisRawWritePortUchar(
                       Adapter->IoPAddr + NIC_RMT_COUNT_MSB,
                       0x0
                      );

    //
    // Set direction (Read)
    //

    NdisRawWritePortUchar(
                   Adapter->IoPAddr + NIC_COMMAND,
                   CR_START | CR_PAGE0 | CR_DMA_READ
                  );

    if (Adapter->EightBitSlot) {

        //
        // Read from port
        //

        NdisRawReadPortUchar(
                       Adapter->IoPAddr + NIC_RACK_NIC,
                       &Tmp
                      );


        NdisRawReadPortUchar(
                       Adapter->IoPAddr + NIC_RACK_NIC,
                       &Tmp
                      );

    } else {

        //
        // Read from port
        //

        NdisRawReadPortUshort(
                       Adapter->IoPAddr + NIC_RACK_NIC,
                       &TmpShort
                      );

    }

    //
    // Wait for addr to change
    //

    TmpShort = 0xFFFF;

    while (TmpShort != 0) {

        NdisRawReadPortUchar(
                      Adapter->IoPAddr + NIC_CRDA_LSB,
                      &Tmp
                     );

        NewAddr = Tmp;

        NdisRawReadPortUchar(
                      Adapter->IoPAddr + NIC_CRDA_MSB,
                      &Tmp
                     );

        NewAddr |= (Tmp << 8);

        if (NewAddr != OldAddr) {

            break;
        }

        NdisStallExecution(1);

        TmpShort--;

    }

    if (NewAddr == OldAddr) {

        return(FALSE);

    }

    //
    // Set Count and destination address
    //

//  NdisRawWritePortUchar(                              // robin
//                     Adapter->IoPAddr + NIC_COMMAND,  // robin
//                     CR_PAGE0                         // robin
//                    );                                // robin

    NdisRawWritePortUchar(
                       Adapter->IoPAddr + NIC_RMT_ADDR_LSB,
                       LSB(PtrToUlong(TargetBuffer))
                      );

    NdisRawWritePortUchar(
                       Adapter->IoPAddr + NIC_RMT_ADDR_MSB,
                       MSB(PtrToUlong(TargetBuffer))
                      );

    NdisRawWritePortUchar(
                       Adapter->IoPAddr + NIC_RMT_COUNT_LSB,
                       LSB(Length)
                      );

    NdisRawWritePortUchar(
                       Adapter->IoPAddr + NIC_RMT_COUNT_MSB,
                       MSB(Length)
                      );

    //
    // Set direction (Write)
    //

    NdisRawWritePortUchar(
                   Adapter->IoPAddr + NIC_COMMAND,
                   CR_START | CR_PAGE0 | CR_DMA_WRITE
                  );

    if (Adapter->EightBitSlot) {

        //
        // Repeatedly write to out port
        //

        NdisRawWritePortBufferUchar(
                       Adapter->IoPAddr + NIC_RACK_NIC,
                       SourceBuffer,
                       Length);

    } else {

        //
        // Write words to out ports
        //

        NdisRawWritePortBufferUshort(
                       Adapter->IoPAddr + NIC_RACK_NIC,
                       (PUSHORT)SourceBuffer,
                       (Length >> 1));

        //
        // Write trailing byte (if necessary)
        //
        if (Length & 0x1)
        {
            SourceBuffer += (Length - 1);

// NE2000 PCMCIA CHANGE!!!  start

            //NdisRawWritePortUchar(
            //    Adapter->IoPAddr + NIC_RACK_NIC,
            //    *SourceBuffer
            //);

            TmpShort = (USHORT)(*SourceBuffer);
            NdisRawWritePortUshort(
                Adapter->IoPAddr + NIC_RACK_NIC,
                TmpShort
            );
// NE2000 PCMCIA CHANGE!!!  end


        }

    }

    //
    // Wait for DMA to complete
    //

    Count = 0xFFFF;

    while (Count) {

        NdisRawReadPortUchar(
                      Adapter->IoPAddr + NIC_INTR_STATUS,
                      &Tmp
                     );

        if (Tmp & ISR_DMA_DONE) {

            break;

        } else {

            Count--;

            NdisStallExecution(4);

        }

#if DBG
        if (!(Tmp & ISR_DMA_DONE)) {

            DbgPrint("CopyDownDMA didn't finish!");

        }
#endif // DBG

    }

    IF_LOG(Ne2000Log('>');)

    return TRUE;
}


BOOLEAN
CardCopyUp(
    IN PNE2000_ADAPTER Adapter,
    IN PUCHAR TargetBuffer,
    IN PUCHAR SourceBuffer,
    IN UINT BufferLength
    )

/*++

Routine Description:

    Copies data from the card to memory.

Arguments:

    Adapter - pointer to the adapter block

    Target - the target address

    Source - the source address (on the card)

    BufferLength - the number of bytes to copy

Return Value:

    TRUE if the transfer completed with no problems.

--*/

{

    //
    // Used to check when the dma is done
    //
    UCHAR IsrValue;

    //
    // Count of the number of transfers to do
    //
    USHORT Count;

    //
    // Place holder for port values
    //
    UCHAR Temp;

    if (BufferLength == 0) {

        return TRUE;

    }

    //
    // Read the Command Register, to make sure it is ready for a write
    //
    NdisRawReadPortUchar(Adapter->IoPAddr+NIC_COMMAND, &Temp);

    if (Adapter->EightBitSlot) {

        //
        // If byte mode
        //

        //
        // Set Count and destination address
        //

//      NdisRawWritePortUchar(                               // robin
//                         Adapter->IoPAddr + NIC_COMMAND,   // robin
//                         CR_PAGE0                          // robin
//                        );                                 // robin

        NdisRawWritePortUchar(
                           Adapter->IoPAddr + NIC_RMT_ADDR_LSB,
                           LSB(PtrToUlong(SourceBuffer))
                          );

        NdisRawWritePortUchar(
                           Adapter->IoPAddr + NIC_RMT_ADDR_MSB,
                           MSB(PtrToUlong(SourceBuffer))
                          );

        NdisRawWritePortUchar(
                           Adapter->IoPAddr + NIC_RMT_COUNT_LSB,
                           LSB(BufferLength)
                          );

        NdisRawWritePortUchar(
                           Adapter->IoPAddr + NIC_RMT_COUNT_MSB,
                           MSB(BufferLength)
                          );

        //
        // Set direction (Read)
        //

        NdisRawWritePortUchar(
                       Adapter->IoPAddr + NIC_COMMAND,
                       CR_START | CR_PAGE0 | CR_DMA_READ
                      );
        //
        // Repeatedly read from port
        //

        NdisRawReadPortBufferUchar(
                       Adapter->IoPAddr + NIC_RACK_NIC,
                       TargetBuffer,
                       BufferLength
                      );

    } else {

        //
        // Else word mode
        //

        USHORT Tmp;

//      NdisRawWritePortUchar(                                   // robin
//                             Adapter->IoPAddr + NIC_COMMAND,   // robin
//                             CR_PAGE0                          // robin
//                            );                                 // robin

        //
        // Avoid transfers to odd addresses
        //

        if ((ULONG_PTR)SourceBuffer & 0x1) {

            //
            // For odd addresses we need to read previous word and store the
            // second byte
            //

            //
            // Set Count and Source address
            //

            NdisRawWritePortUchar(
                               Adapter->IoPAddr + NIC_RMT_ADDR_LSB,
                               LSB(PtrToUlong(SourceBuffer - 1))
                              );

            NdisRawWritePortUchar(
                               Adapter->IoPAddr + NIC_RMT_ADDR_MSB,
                               MSB(PtrToUlong(SourceBuffer - 1))
                              );

            NdisRawWritePortUchar(
                               Adapter->IoPAddr + NIC_RMT_COUNT_LSB,
                               0x2
                              );

            NdisRawWritePortUchar(
                               Adapter->IoPAddr + NIC_RMT_COUNT_MSB,
                               0x0
                              );

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
高清shemale亚洲人妖| 欧美一二三四区在线| 另类小说综合欧美亚洲| 日本不卡视频在线观看| 免费日本视频一区| 一本大道久久a久久综合婷婷| 久久国产麻豆精品| 国产成人午夜99999| 99精品欧美一区二区蜜桃免费| 精品视频色一区| 一区二区三区久久久| 视频在线观看一区二区三区| 国产精品1区2区| 欧美日韩国产大片| 国产精品国产三级国产有无不卡| 国产精品一区二区三区网站| 成人精品免费看| 成人深夜视频在线观看| 欧美大片在线观看一区| 午夜精品视频一区| 国产成人亚洲综合a∨婷婷| 欧美精品乱码久久久久久按摩| 久久精品国内一区二区三区| 成人丝袜高跟foot| 911精品产国品一二三产区| 亚洲精品久久久蜜桃| 国产精品夜夜爽| 久久免费的精品国产v∧| 爽好久久久欧美精品| 这里只有精品99re| 天堂成人免费av电影一区| 精品视频123区在线观看| 亚洲欧美在线视频| av在线一区二区| 中文字幕不卡在线观看| 粉嫩嫩av羞羞动漫久久久| 国产精品久久久久久久久免费丝袜 | 色一区在线观看| 久久精品欧美一区二区三区不卡| 亚洲制服丝袜一区| 色综合久久久久久久久久久| 国产精品国产精品国产专区不片| 成a人片国产精品| 国产精品美女www爽爽爽| 成人免费视频视频| 日韩电影在线观看一区| 日韩视频一区二区| 激情综合网天天干| 亚洲一区二区欧美日韩| 日韩欧美国产综合在线一区二区三区| 欧美aa在线视频| 亚洲午夜久久久久| 久久婷婷国产综合精品青草| 懂色av一区二区夜夜嗨| 2024国产精品视频| 欧美羞羞免费网站| 日韩av在线免费观看不卡| 欧美精品一区二区三区视频| 一本在线高清不卡dvd| 日韩中文字幕一区二区三区| 亚洲特级片在线| 1区2区3区精品视频| 26uuu欧美| 欧美一区二区三区免费视频| 精品制服美女丁香| 美女在线一区二区| 亚洲另类一区二区| 国产欧美一区二区精品久导航| 欧美一级理论片| 色婷婷久久一区二区三区麻豆| aaa亚洲精品| 99精品视频在线观看免费| av不卡一区二区三区| 91在线免费看| 激情图片小说一区| 午夜精品福利一区二区蜜股av| 中文字幕亚洲精品在线观看 | 中文字幕日韩一区二区| 日韩一区二区三区在线观看| 欧美精品久久一区| 欧美一级生活片| 欧美亚洲图片小说| 国产日韩影视精品| 日本午夜精品视频在线观看| 成人午夜碰碰视频| 麻豆精品视频在线观看视频| 久久精品免费观看| 日韩高清在线不卡| 91色在线porny| 精品久久免费看| 一区二区三区在线视频免费观看 | 国产成a人亚洲| 国产精品一区二区x88av| bt欧美亚洲午夜电影天堂| 欧美日韩免费电影| 精品99999| 亚洲国产精品成人久久综合一区 | 久久国产尿小便嘘嘘尿| 色噜噜狠狠成人网p站| 欧美日韩一二三| 亚洲一区免费观看| 欧美日韩日日摸| 欧美国产日本韩| 日韩国产一二三区| 高清不卡一二三区| 欧美变态口味重另类| 国产精品国产精品国产专区不片 | 国产精品一区二区久激情瑜伽 | 精品国产髙清在线看国产毛片| 亚洲欧洲日韩在线| 在线观看www91| 成人欧美一区二区三区小说| 豆国产96在线|亚洲| 日韩视频在线永久播放| 亚洲大片在线观看| 欧美日本一区二区在线观看| 亚洲欧洲日韩综合一区二区| 99精品黄色片免费大全| 亚洲你懂的在线视频| 91福利在线播放| 激情小说欧美图片| 中文字幕欧美三区| 99re视频精品| 国产精品青草久久| 久久激情五月婷婷| 91美女福利视频| 一区二区视频在线| 久久免费美女视频| 国产精品资源在线看| 国产欧美精品一区aⅴ影院| 99riav一区二区三区| 一区二区三区在线影院| 欧美三级日韩三级国产三级| 国产精品综合视频| 中文一区一区三区高中清不卡| 国产传媒一区在线| 国产欧美一区二区三区鸳鸯浴 | 国产午夜亚洲精品羞羞网站| 国产一区二区三区综合| 欧美精品一区在线观看| 91麻豆国产在线观看| 午夜精彩视频在线观看不卡| 亚洲三级在线看| 欧美tickling挠脚心丨vk| 在线观看日韩高清av| 激情综合色播激情啊| 日本91福利区| 国产精品动漫网站| 久久先锋影音av鲁色资源| caoporn国产精品| 成人av先锋影音| 青娱乐精品在线视频| 久久理论电影网| 在线免费观看日本一区| 蜜臀a∨国产成人精品| 喷水一区二区三区| 国产精品毛片高清在线完整版 | 亚洲精品欧美二区三区中文字幕| 精品sm在线观看| 久久久久国产免费免费| 日韩欧美一区电影| 欧美日韩在线不卡| 在线亚洲高清视频| 一本高清dvd不卡在线观看| 91女人视频在线观看| 成人动漫av在线| 亚洲成人自拍一区| 亚洲夂夂婷婷色拍ww47| 一区二区成人在线视频| ...xxx性欧美| 亚洲国产一区视频| 国产一区二区三区在线观看精品| 视频一区在线视频| 亚洲观看高清完整版在线观看| 日本一区二区三区在线观看| 欧美zozozo| 亚洲人成7777| 精品在线视频一区| 午夜激情一区二区| 奇米一区二区三区av| 日本成人在线看| 国产精选一区二区三区| 91视频国产资源| 欧美大片一区二区| 亚洲一区二区三区四区五区黄| 亚洲福利视频一区| 免费观看在线综合| 97精品国产97久久久久久久久久久久| 蜜臀va亚洲va欧美va天堂| 国产精品性做久久久久久| 69成人精品免费视频| 亚洲综合一二区| 国内国产精品久久| 色国产综合视频| 这里只有精品视频在线观看| 国产精品热久久久久夜色精品三区 | 亚洲欧洲一区二区三区| 午夜亚洲国产au精品一区二区| 成人午夜又粗又硬又大| 精品奇米国产一区二区三区|