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

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

?? 3c59x.inc

?? MenuetOS是一個用匯編開發的32/64位PC操作系統
?? INC
?? 第 1 頁 / 共 5 頁
字號:
;***************************************************************************;   Function;      e3c59x_rx_reset;   Description;      resets and enables receiver engine;   Parameters:;      ebp - io_addr;   Return value:;   Destroyed registers;      eax, ebx, ecx, edx, edi, esi;;***************************************************************************        align 4e3c59x_rx_reset:        lea     edx, [ebp+E3C59X_REG_COMMAND]        mov     ax, (0101b shl 11) or 0x4 ; RxReset        out     dx, ax; wait for RxReset to complete        mov     ecx, 200000.rx_reset_loop:        in      ax, dx        test    ah, 10000b ; check CmdInProgress        jz      .setup_upd        dec     ecx        jns     .rx_reset_loop.setup_upd:; check if full bus mastering        test    byte [e3c59x_full_bus_master], 0xff        jz      .rx_enable; create upd ring        mov     eax, e3c59x_upd_buff        zero_to_virt eax        mov     [e3c59x_curr_upd], eax        mov     esi, eax        virt_to_dma esi        mov     edi, e3c59x_rx_buff        zero_to_dma edi        mov     ebx, e3c59x_upd_buff+(E3C59X_NUM_RX_DESC-1)*E3C59X_UPD_SIZE        zero_to_virt ebx        mov     cl, E3C59X_NUM_RX_DESC-1.upd_loop:        mov     [ebx+E3C59X_UPD_UP_NEXT_PTR], esi        and     dword [eax+E3C59X_UPD_PKT_STATUS], 0        mov     [eax+E3C59X_UPD_UP_FRAG_ADDR], edi        mov     dword [eax+E3C59X_UPD_UP_FRAG_LEN], E3C59X_MAX_ETH_FRAME_SIZE or (1 shl 31)        add     edi, E3C59X_MAX_ETH_FRAME_SIZE        add     esi, E3C59X_UPD_SIZE        mov     ebx, eax        add     eax, E3C59X_UPD_SIZE        dec     cl        jns     .upd_loop        mov     eax, e3c59x_upd_buff        zero_to_dma eax        lea     edx, [ebp+E3C59X_REG_UP_LIST_PTR]        out     dx, eax ; write E3C59X_REG_UP_LIST_PTR        lea     edx, [ebp+E3C59X_REG_COMMAND].rx_enable:        mov     ax, (00100b shl 11) ; RxEnable        out     dx, ax        ret;***************************************************************************;   Function;      e3c59x_write_eeprom;   Description;      reads eeprom;      Note : the caller must switch to the register window 0;             before calling this function;   Parameters:;      ax - register to be read (only the first 63 words can be read);      cx - value to be read into the register;   Return value:;      ax - word read;   Destroyed registers;      ax, ebx, edx;;***************************************************************************;       align 4;e3c59x_write_eeprom:;       mov     edx, [io_addr];       add     edx, E3C59X_REG_EEPROM_COMMAND;       cmp     ah, 11b;       ja      .finish ; address may have a value of maximal 1023;       shl     ax, 2;       shr     al, 2;       push    eax;; wait for busy;       mov     ebx, 0xffff;@@:;       in      ax, dx;       test    ah, 0x80;       jz      .write_enable;       dec     ebx;       jns     @r;; write enable;.write_enable:;       xor     eax, eax;       mov     eax, (11b shl 4);       out     dx, ax;; wait for busy;       mov     ebx, 0xffff;@@:;       in      ax, dx;       test    ah, 0x80;       jz      .erase_loop;       dec     ebx;       jns     @r;.erase_loop:;       pop     eax;       push    eax;       or      ax, (11b shl 6) ; erase register;       out     dx, ax;       mov     ebx, 0xffff;@@:;       in      ax, dx;       test    ah, 0x80;       jz      .write_reg;       dec     ebx;       jns     @r;.write_reg:;       add     edx, E3C59X_REG_EEPROM_DATA-E3C59X_REG_EEPROM_COMMAND;       mov     eax, ecx;       out     dx, ax;; write enable;       add     edx, E3C59X_REG_EEPROM_COMMAND-E3C59X_REG_EEPROM_DATA;       xor     eax, eax;       mov     eax, (11b shl 4);       out     dx, ax; wait for busy;       mov     ebx, 0xffff;@@:;       in      ax, dx;       test    ah, 0x80;       jz      .issue_write_reg;       dec     ebx;       jns     @r;.issue_write_reg:;       pop     eax;       or      ax, 01b shl 6;       out     dx, ax;.finish:;       ret;***************************************************************************;   Function;      e3c59x_read_eeprom;   Description;      reads eeprom;   Parameters:;       ax - register to be read (only the first 63 words can be read);      ebp - io_addr;   Return value:;      ax - word read;   Destroyed registers;      ax, ebx, edx, ebp;;***************************************************************************        align 4e3c59x_read_eeprom:        push    eax; switch to register window 0        lea     edx, [ebp+E3C59X_REG_COMMAND]        mov     ax, E3C59X_SELECT_REGISTER_WINDOW+0        out     dx, ax        pop     eax        and     ax, 111111b ; take only the first 6 bits into account        movzx   ebx, byte [e3c59x_ver_id]        test    word [ebx*4+e3c59x_hw_versions+2], EEPROM_8BIT        jz      @f        add     ax, 0x230 ; hardware constant        jmp     .read@@:        add     ax, E3C59X_EEPROM_CMD_READ        test    word [ebx*4+e3c59x_hw_versions+2], EEPROM_OFFSET        jz      .read        add     ax, 0x30.read:        lea     edx, [ebp+E3C59X_REG_EEPROM_COMMAND]        out     dx, ax        mov     ebx, 0xffff ; duration of about 162 us ;-).wait_for_reading:        in      ax, dx        test    ah, 0x80 ; check bit eepromBusy        jz      .read_data        dec     ebx        jns     .wait_for_reading.read_data:        lea     edx, [ebp+E3C59X_REG_EEPROM_DATA]        in      ax, dx        ret;***************************************************************************;   Function;      e3c59x_mdio_sync;   Description;      initial synchronization;   Parameters;      ebp - io_addr;   Return value;   Destroyed registers;      ax, edx, cl;;***************************************************************************        align 4e3c59x_mdio_sync:; switch to register window 4        lea     edx, [ebp+E3C59X_REG_COMMAND]        mov     ax, E3C59X_SELECT_REGISTER_WINDOW+4        out     dx, ax        cmp     byte [e3c59x_preamble], 0        je      .no_preamble; send 32 logic ones        lea     edx, [ebp+E3C59X_REG_PHYSICAL_MGMT]        mov     cl, 31.loop:        mov     ax, (1 shl E3C59X_BIT_MGMT_DATA) or (1 shl E3C59X_BIT_MGMT_DIR)        out     dx, ax        in      ax, dx ; delay        mov     ax, (1 shl E3C59X_BIT_MGMT_DATA) \                    or (1 shl E3C59X_BIT_MGMT_DIR) \                    or (1 shl E3C59X_BIT_MGMT_CLK)        out     dx, ax        in      ax, dx ; delay        dec     cl        jns     .loop.no_preamble:        ret;***************************************************************************;   Function;      e3c59x_mdio_read;   Description;      read MII register;      see page 16 in D83840A.pdf;   Parameters;       ah - PHY addr;       al - register addr;      ebp - io_addr;   Return value;      ax - register read;   Destroyed registers;      eax, ebx, cx, edx;;***************************************************************************        align 4e3c59x_mdio_read:        push    eax        call    e3c59x_mdio_sync ; returns with window #4        pop     eax        lea     edx, [ebp+E3C59X_REG_PHYSICAL_MGMT]        shl     al, 3        shr     ax, 3        and     ax, not E3C59X_MII_CMD_MASK        or      ax, E3C59X_MII_CMD_READ        mov     ebx, eax        xor     ecx, ecx        mov     cl, 13.cmd_loop:        mov     ax, (1 shl E3C59X_BIT_MGMT_DIR) ; write mii        bt      ebx, ecx        jnc     .zero_bit        or      al, (1 shl E3C59X_BIT_MGMT_DATA).zero_bit:        out     dx, ax        push    eax        in      ax, dx ; delay        pop     eax        or      al, (1 shl E3C59X_BIT_MGMT_CLK) ; write        out     dx, ax        in      ax, dx ; delay        dec     cl        jns     .cmd_loop; read data (18 bits with the two transition bits)        mov     cl, 17        xor     ebx, ebx.read_loop:        shl     ebx, 1        xor     eax, eax ; read comand        out     dx, ax        in      ax, dx ; delay        in      ax, dx        test    al, (1 shl E3C59X_BIT_MGMT_DATA)        jz      .dont_set        inc     ebx.dont_set:        mov     ax, (1 shl E3C59X_BIT_MGMT_CLK)        out     dx, ax        in      ax, dx ; delay        dec     cl        jns     .read_loop        mov     eax, ebx        ret;***************************************************************************;   Function;      e3c59x_mdio_write;   Description;      write MII register;      see page 16 in D83840A.pdf;   Parameters;       ah - PHY addr;       al - register addr;       bx - word to be written;      ebp - io_addr;   Return value;      ax - register read;   Destroyed registers;      eax, ebx, cx, edx;;***************************************************************************        align 4e3c59x_mdio_write:        push    eax        call    e3c59x_mdio_sync        pop     eax        lea     edx, [ebp+E3C59X_REG_PHYSICAL_MGMT]        shl     al, 3        shr     ax, 3        and     ax, not E3C59X_MII_CMD_MASK        or      ax, E3C59X_MII_CMD_WRITE        shl     eax, 2        or      eax, 10b ; transition bits        shl     eax, 16        mov     ax, bx        mov     ebx, eax        mov     ecx, 31.cmd_loop:        mov     ax, (1 shl E3C59X_BIT_MGMT_DIR) ; write mii        bt      ebx, ecx        jnc     .zero_bit        or      al, (1 shl E3C59X_BIT_MGMT_DATA).zero_bit:        out     dx, ax        push    eax        in      ax, dx ; delay        pop     eax        or      al, (1 shl E3C59X_BIT_MGMT_CLK) ; write        out     dx, ax        in      ax, dx ; delay        dec     ecx        jns     .cmd_loop        ret;***************************************************************************;   Function;      e3c59x_transmit;   Description;      Transmits a packet of data via the ethernet card;         edi - Pointer to 48 bit destination address;          bx - Type of packet;         ecx - size of packet;         esi - pointer to packet data;         ebp - io_addr;   Destroyed registers;      eax, ecx, edx, ebp;;***************************************************************************        align 4e3c59x_transmit:        jmp     dword [e3c59x_transmit_function];***************************************************************************;   Function;      e3c59x_check_tx_status;   Description;      Checks TxStatus queue.;   Return value;      al - 0 no error was found;      al - 1 error was found TxReset is needed;   Destroyed registers;      eax, ecx, edx, ebp;;***************************************************************************e3c59x_check_tx_status:        movzx   ebp, word [io_addr] ; to be implemented in ETHERNET.INC; clear TxStatus queue        lea     edx, [ebp+E3C59X_REG_TX_STATUS]        mov     cl, 31 ; max number of queue entries.tx_status_loop:        in      al, dx        test    al, al        jz      .finish ; no error        test    al, 0x3f        jnz     .finish ; error.no_error_found:; clear current TxStatus entry which advances the next one        xor     al, al        out

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美网站大全在线观看| 国产香蕉久久精品综合网| 日韩国产高清在线| 国产三级精品视频| 欧美日韩国产精选| 成人精品电影在线观看| 免费观看一级欧美片| 日韩美女视频一区二区| 日韩欧美国产三级电影视频| 色一情一伦一子一伦一区| 国产一区二区三区四区在线观看| 亚洲国产日产av| 中文字幕精品一区二区三区精品 | 国产成人免费视频网站| 亚洲成人动漫在线观看| 国产精品国产a| 日韩欧美国产麻豆| 欧美日韩国产一区| 色噜噜夜夜夜综合网| 丁香婷婷深情五月亚洲| 久久av老司机精品网站导航| 午夜免费欧美电影| 亚洲精品国产a久久久久久| 国产免费久久精品| 日韩精品中文字幕在线不卡尤物| 欧美中文字幕亚洲一区二区va在线 | 综合在线观看色| 久久久av毛片精品| 欧美va亚洲va香蕉在线| 欧美日韩在线免费视频| 91福利视频网站| 97久久久精品综合88久久| 国产成人一区二区精品非洲| 国精产品一区一区三区mba视频 | 久久久亚洲午夜电影| 亚洲欧美综合在线精品| 精品国产乱子伦一区| 91麻豆精品国产91久久久久久久久| 色综合亚洲欧洲| 色综合久久88色综合天天6| 成人av第一页| 99精品1区2区| 91一区二区在线| 色综合天天做天天爱| 99免费精品视频| 97超碰欧美中文字幕| 99视频精品免费视频| 国产91丝袜在线播放九色| 国产精品1区2区| 懂色av中文字幕一区二区三区| 国产一区二区在线影院| 国产黄人亚洲片| 高清不卡在线观看av| 99久久精品国产毛片| 色噜噜狠狠色综合欧洲selulu| 一本久久综合亚洲鲁鲁五月天| 一本色道久久综合亚洲精品按摩| 在线观看免费视频综合| 欧美日韩在线播| 日韩你懂的在线播放| 精品国一区二区三区| 久久久99久久| 亚洲人成亚洲人成在线观看图片| 一区二区三区四区亚洲| 午夜国产不卡在线观看视频| 人妖欧美一区二区| 国产精品1区2区3区在线观看| 99麻豆久久久国产精品免费| 欧美中文一区二区三区| 欧美成人精品1314www| 国产清纯美女被跳蛋高潮一区二区久久w | 亚洲欧美一区二区三区国产精品 | 中文字幕日韩av资源站| 亚洲主播在线观看| 久久国产乱子精品免费女| 国产激情一区二区三区| 久久九九影视网| 亚洲蜜臀av乱码久久精品| 亚洲第一成人在线| 国产伦精一区二区三区| 色94色欧美sute亚洲线路一ni| 91精品国产黑色紧身裤美女| 国产日韩欧美精品在线| 亚洲图片有声小说| 国精产品一区一区三区mba桃花| 91视视频在线观看入口直接观看www | 一本久久综合亚洲鲁鲁五月天 | 欧美肥妇free| 中文天堂在线一区| 天天色天天操综合| 成人午夜精品在线| 欧美日韩专区在线| 国产免费观看久久| 日本va欧美va欧美va精品| 成人高清在线视频| 日韩区在线观看| 一区二区视频免费在线观看| 激情六月婷婷综合| 日韩一区有码在线| 日韩高清在线不卡| 91社区在线播放| 久久久噜噜噜久久中文字幕色伊伊 | 丁香亚洲综合激情啪啪综合| 欧美日韩日日夜夜| 国产精品久久免费看| 日产国产欧美视频一区精品| 91色婷婷久久久久合中文| 欧美变态凌虐bdsm| 亚洲国产美女搞黄色| 成人黄色小视频在线观看| 欧美一区二区免费视频| 亚洲欧美另类久久久精品| 国产精一区二区三区| 欧美精品在线视频| 亚洲人成在线播放网站岛国| 国产一区二三区好的| 欧美一区永久视频免费观看| 亚洲女厕所小便bbb| 国产69精品久久久久777| 日韩你懂的在线播放| 三级一区在线视频先锋 | 国产99久久久国产精品潘金网站| 91.成人天堂一区| 亚洲黄一区二区三区| 成人禁用看黄a在线| 久久久久亚洲蜜桃| 久久精品国产**网站演员| 欧美日高清视频| 亚洲精品国产a| 91麻豆精品一区二区三区| 国产精品美女久久久久久2018| 九九视频精品免费| 日韩欧美在线观看一区二区三区| 亚洲sss视频在线视频| 欧洲精品一区二区三区在线观看| 亚洲欧美在线aaa| 99国产精品久| 亚洲视频你懂的| 色哟哟日韩精品| 亚洲精品少妇30p| 欧洲精品中文字幕| 亚洲综合男人的天堂| 欧美性一区二区| 亚洲一区免费观看| 欧美日韩不卡一区| 日日夜夜一区二区| 日韩一级片在线观看| 久久福利视频一区二区| 337p日本欧洲亚洲大胆色噜噜| 久久成人免费网| 国产日韩视频一区二区三区| 丁香六月久久综合狠狠色| 国产精品麻豆久久久| 91网址在线看| 亚洲国产成人av网| 欧美日韩成人综合天天影院| 奇米色一区二区| 久久影音资源网| 成人h版在线观看| 亚洲综合在线五月| 在线播放一区二区三区| 蜜臀av性久久久久蜜臀av麻豆| 欧美va在线播放| 成人综合激情网| 一卡二卡三卡日韩欧美| 亚洲免费观看高清在线观看| 在线免费观看不卡av| 亚洲成a人片综合在线| 日韩欧美一二区| 成人网男人的天堂| 亚洲激情中文1区| 欧美一级电影网站| 国产91丝袜在线播放| 艳妇臀荡乳欲伦亚洲一区| 日韩视频免费观看高清完整版| 国产一区 二区| 亚洲乱码国产乱码精品精小说| 欧美视频日韩视频在线观看| 久久精品免费观看| 国产精品久久久久久亚洲毛片 | 欧美性猛交xxxxxx富婆| 美女一区二区三区在线观看| 国产人久久人人人人爽| 欧美中文字幕亚洲一区二区va在线| 久久激情五月婷婷| 国产精品伦理一区二区| 欧美日韩国产中文| 国产一区二区久久| 亚洲国产精品久久艾草纯爱| 久久网站热最新地址| 欧美图片一区二区三区| 极品少妇xxxx偷拍精品少妇| 亚洲精品大片www| 久久婷婷一区二区三区| 欧美影院一区二区三区| 国产成人av一区二区三区在线 | 欧美另类高清zo欧美| 国产成人在线观看免费网站| 日韩精品国产精品| 日韩伦理免费电影|