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

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

?? ps2main.asm

?? Cypress 的(鼠標(biāo)+鍵盤)復(fù)合設(shè)備匯編源程序
?? ASM
?? 第 1 頁 / 共 2 頁
字號(hào):
;   C: 0 if command was sucessful
;   C: 1 if command failed 
;========================================================================

ps2_select_alternate_scan_code:
    call    ps2_ack_byte                        ;ack this byte
    call    ps2_wait_byte                       ;wait for alternate code byte
    cmp     A,4                                 ;if out of range
    jnc     .error                              ;exit with C bit set
    call    ps2key_clear_key_buffer             ;clear out buffer and stop any typematic stuff       
    call    ps2key_disable_typematic_action
    or      A,0                                 ;else if 1-4
    jz      .send                                                     
    mov     [ps2key_scan_set],A                 ;  save it
    call    ps2_ack_byte                        ;  ack the byte
    jmp     .exit
.send:                                          ;else, a 0 indicates to send back current scan set
    call    ps2_ack_byte                        ;ack the byte
    jc      .exit                               ;if host inhibit, exit
    mov     A,[ps2key_scan_set]                 ;else return current scan set 
    call       ps2_put_byte
.exit:
    CLEARC
    jmp     endswitch
.error:
    SETC
    jmp     endswitch

;========================================================================
; FUNCTION: ps2_read_id
;
;
; Returns:
;   C: 0, command can't fail
;========================================================================


ps2_read_id:
    call    ps2_ack_byte                        ;ack the byte
    jc      .exit                               ;if host inhibit during ack, exit

    mov     A,0abh                              ;respond with hard coded id bytes
    call    ps2_put_byte                     
    jc      .exit                               ;problem xmitting 1st id, exit

    mov     A,83h                               ;transmit 2nd byte
    call    ps2_put_byte                     
    call     ps2key_clear_key_buffer             ;clear the key buffer
    SETBIT   PS2_SCAN_KBD,ps2_flags              ;enable scanning
.exit:
    CLEARC
    jmp     endswitch
;========================================================================
; FUNCTION: ps2_set_typematic_rate_delay
;
; sets the global typematic rate and delay settings.
; this routine uses 2 lookups to convert the values sent by the host,
; into the proper 4ms counts that will be used to achieve the rate and delay
; functions.  the rate table was derived from an excel spreadsheet rate.xls;
; the shorter delay table was derived by hand
;
; Returns:
;
;   C: 0 if command was sucessful
;   C: 1 if command failed 
;
;========================================================================
XPAGEOFF
ps2_typematic_rate_table:                   ;table of 4ms counts to achieve rate

    db      8,9,10,11,14,14,15,16
    db      17,19,21,23,25,27,29,31
    db      33,38,42,46,50,54,58,63
    db      67,75,83,92,100,108,117,125

ps2_typematic_delay_table:                  ;table of 4ms counts to achieve delay
    db      62,125,187,250
XPAGEON

ps2_set_typematic_rate_delay:
    call    ps2_ack_byte                    ;ack the byte
    call    ps2_wait_byte                   ;get  rate/delay byte
    cmp     A,80h                           ;if out of range
    jc      .l0                                            
    SETC                                        ;scream,cry, and return
    jmp     endswitch
.l0:
    push    A
    rrc                                         ;otherwise, get bits 5 and 6
    rrc 
    rrc
    rrc
    rrc
    and     A,3
    index   ps2_typematic_delay_table           ;get delay
    mov     [ps2key_type_delay],A               ;save it
    pop     A                                   ;get original parameter
    and     A,1fh                               ;use only 5 ls bits
    index   ps2_typematic_rate_table            ;get rate
    mov     [ps2key_type_period],A              ;save it    
    call    ps2_ack_byte                        ;ack byte
    CLEARC
    jmp     endswitch

;========================================================================
; FUNCTION: ps2_enable
;
;
; enables keyboard scanning
;
;
;========================================================================

ps2_enable:
   CLRBIT   PS2_XMIT,ps2_flags                  ;clear any pending transmission       
   call     ps2key_clear_key_buffer             ;clear the key buffer
   SETBIT   PS2_SCAN_KBD,ps2_flags              ;enable scanning
   call     ps2_ack_byte                        ;ack the byte
   CLEARC
   jmp      endswitch


;========================================================================
; FUNCTION: ps2_default_disable
;
;
; disables keyboard scanning
;
;
;========================================================================

ps2_default_disable:
    CLRBIT  PS2_SCAN_KBD,ps2_flags             ;disable scanning       
ps2_set_default:
    CLRBIT  PS2_XMIT,ps2_flags                 ;clear any pending transmissions
    call    ps2key_clear_key_buffer            ;clear the fifo                         
    call    ps2key_set_default_key_types                     
    call    ps2_ack_byte                       ;ack the byte
    CLEARC
    jmp     endswitch


;========================================================================
; FUNCTION: ps2_set_keys
;
;
; sets all the key types to a common type
;
; Returns:
;
;   C: 0 command can't fail
;
;
;========================================================================

ps2_set_keys:
    mov     A,X                             ;the X register contains the zero-based
                                            ;command.
    sub     A,(0f7h-0edh)                   ;derive key type (0,1,or2) from this
    push    A                               ;save it
    mov     A,AT101KB_PAUSE                 ;fetch current pause key setting
    call    ps2key_at101_2_ss3              ;get scan set 3 code for it
    call    ps2key_get_key_type             ;it's returned in X
    pop     A                               ;restore key type into A
    push    X                               ;save pause key setting
    call    ps2key_set_all_keys             ;set all key types now
    mov     A,AT101KB_PAUSE                 ;get scan code for pause key
    call    ps2key_at101_2_ss3              ;get scan set 3 code for it
    pop     X                               ;restore setting for pause key into X
    call    ps2key_save_key_type            ;and set it
    call    ps2_ack_byte                    ;ack the byte
    CLEARC                                  ;indicate we are done.
    jmp     endswitch
;========================================================================
; FUNCTION: ps2_resend
;
;
; sets resend bit
;
; Returns:
;   C: 0 
;
;========================================================================

ps2_resend:
    SETBIT  PS2_RESEND,ps2_flags                ;set the resend flag
    CLEARC                                      ;indicate success
    jmp     endswitch

;========================================================================
; FUNCTION: ps2_reset
;
;
; performs a reset
;
; Returns: C= 0 if command aborted due to host transmit request
;
;========================================================================



ps2_reset:
    iowr    WATCHDOG_REG
    DELAY   250
    call    ps2_ack_byte                         ;ack the byte
    jc      .exit
    DELAY   250
    iowr    WATCHDOG_REG
    DELAY   250
    iowr    WATCHDOG_REG
    iord    USB_STATUS_CONTROL_REG
    and     A,PS2_DATA_BIT                      ;check data line
    jz      .exit                               ;if host xmit request, abort Reset

    jmp     soft_reset                           ;soft restart
    
.exit:
    CLEARC
    jmp     endswitch

;========================================================================
; FUNCTION: ps2_set_key_type
;
;
; sets individual key types to the values indicated
;
;
;========================================================================


ps2_set_key_type:
    mov     A,X                         ;zero-based command is in X, get it in A
    sub     A,(0fbh - 0edH)             ;derive key type (0,1,2,or3)
    push    A                           ;save it                           
    call    ps2_ack_byte                ;ack the byte
.l1:
    call    ps2_wait_byte               ;wait for keycode
    cmp     A,LAST_SCAN3_CODE+1         ;if valid       
    jnc     .error                            
    or      A,0                 
    jz      .error                             
    pop     X                           ;get key type
    push    X                           ;save it again
    call    ps2key_save_key_type        ;set it
    call    ps2_ack_byte                ;ack the byte
    jmp     .l1                         ;continue doing this until we can't recognize
                                        ;a scan code
.error:
    pop     X                           ;restore stack level,return with offending
                                        ;byte in A
    SETC                                ;indicate an error condition
    jmp     endswitch



;========================================================================
; FUNCTION: ps2_ack_byte
;
;
; Sends an ACK byte
;
;
;========================================================================



ps2_ack_byte:
    mov     A,PS2_ACK
    call    ps2_put_byte                     
    ret


;========================================================================
; FUNCTION: ps2_BAT
;
; Performs BAT assurance test. For now, this test does nothing
; but delay for 350 msec before returning.
;
;
; Returns:
;
;   C: 0
;   A: BAT_PASS
; 
;
;
;========================================================================

ps2_BAT:
    ;leds on
    mov     A,(CAPS_LOCK_LED + SCROLL_LOCK_LED + NUM_LOCK_LED)
    call    ksc_writeLED
    mov     A,[dual_ifc_1ms]
    dec     A
.l1:
    iowr    WATCHDOG_REG
    cmp     A,[dual_ifc_1ms]           ;consume 256 msec    
    jnz     .l1
    add     A,100
 .l2:                               ;consume    100 more
    iowr    WATCHDOG_REG
    cmp     A,[dual_ifc_1ms]
    jnz     .l2   
    mov     A,0
    call    ksc_writeLED
    mov     A,BAT_PASS
    ret


;========================================================================
; FUNCTION: ps2_put_byte
;
;
;========================================================================

ps2_put_byte:
    push     X                          ;save X
.l1:
    call    ps2_send                    ;try to send the byte
    jnc     .exit

    mov     X,A                         ;save the byte
    DELAY   5                           ;wait 5 usec
    iord    USB_STATUS_CONTROL_REG      ;if data bit is low
    and     A,PS2_DATA_BIT
    jz      .error                      ;quit due to host transmit request
    mov     A,X                         ;else try again
    jmp     .l1

.error:                                 ;return with carry set
    SETC
.exit:
    mov     [ps2_last_xmit],A           ;save last transmitted byte
    pop     X                           ;pop X register
    ret







?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色又黄又爽网站www久久| av亚洲精华国产精华| 中文字幕免费观看一区| 欧美性欧美巨大黑白大战| 日本成人中文字幕在线视频| 久久久99精品久久| 欧美精品自拍偷拍| 成人av电影免费观看| 奇米精品一区二区三区在线观看一| 国产亚洲一区字幕| 日韩一区二区三区视频在线| 成人av网址在线| 蜜臀久久99精品久久久久久9| 亚洲视频一二区| 久久你懂得1024| 欧美美女喷水视频| 欧美自拍偷拍午夜视频| 国产电影精品久久禁18| 日韩av成人高清| 亚洲欧美国产高清| 久久精品网站免费观看| 日韩一区二区三区电影| 91免费版pro下载短视频| 国产乱码精品1区2区3区| 日韩精品乱码av一区二区| 亚洲欧美韩国综合色| 国产精品欧美经典| 久久久精品国产免大香伊| 欧美一级欧美三级在线观看| 在线观看一区不卡| 91偷拍与自偷拍精品| 国产91清纯白嫩初高中在线观看| 精品一区二区免费看| 偷拍日韩校园综合在线| 亚洲一二三区不卡| 亚洲欧美一区二区三区国产精品 | 亚洲资源中文字幕| 国产精品欧美久久久久无广告 | 色综合视频一区二区三区高清| 国产精品亚洲一区二区三区妖精 | 国产精品欧美极品| 久久久亚洲精品一区二区三区| 欧美一区二区三区免费观看视频 | 视频一区欧美精品| 午夜精品久久久| 亚洲二区在线观看| 亚洲成a人v欧美综合天堂下载 | 久久午夜老司机| 精品久久99ma| 欧美成人精品二区三区99精品| 欧美一区二区三区在线电影| 欧美一区二区三区在线看| 日韩视频一区二区在线观看| 日韩欧美在线观看一区二区三区| 3atv在线一区二区三区| 在线播放一区二区三区| 1024亚洲合集| 日韩av电影免费观看高清完整版在线观看 | 国精品**一区二区三区在线蜜桃| 肉肉av福利一精品导航| 免费精品99久久国产综合精品| 蜜臀av一区二区三区| 国模大尺度一区二区三区| 成人手机在线视频| 色综合亚洲欧洲| 欧美猛男超大videosgay| 欧美一区二区福利在线| 久久亚洲免费视频| 国产精品久久久久9999吃药| 亚洲精品自拍动漫在线| 亚洲福利视频一区二区| 美女在线视频一区| 国产精品538一区二区在线| 成a人片国产精品| 欧美在线视频不卡| 91精品国产黑色紧身裤美女| 久久网站热最新地址| 亚洲天堂2014| 日韩精品午夜视频| 成人久久18免费网站麻豆 | 欧美国产一区在线| 亚洲精品自拍动漫在线| 日本aⅴ免费视频一区二区三区| 久久成人久久鬼色| av一区二区三区| 欧美肥胖老妇做爰| 久久久无码精品亚洲日韩按摩| 亚洲另类中文字| 精品一区二区成人精品| 91丨九色丨国产丨porny| 538在线一区二区精品国产| 欧美电影免费提供在线观看| 亚洲欧洲日韩女同| 青青草91视频| 色综合天天在线| 精品久久一二三区| 亚洲一区在线视频| 国产精一区二区三区| 欧美日韩成人激情| 最新久久zyz资源站| 蜜桃精品视频在线| av不卡免费电影| xvideos.蜜桃一区二区| 亚洲一二三四在线| 粉嫩久久99精品久久久久久夜| 欧美久久高跟鞋激| 亚洲日本在线看| 国产成人精品亚洲日本在线桃色 | 国产高清视频一区| 欧美精品在线观看播放| 国产精品理伦片| 久草热8精品视频在线观看| 91精品办公室少妇高潮对白| 中文字幕第一区| 看电视剧不卡顿的网站| 欧洲av在线精品| 国产精品久久久久久久久久久免费看| 久久精品国产一区二区| 欧美色偷偷大香| 亚洲狠狠丁香婷婷综合久久久| 国产成人精品免费| 欧美刺激脚交jootjob| 婷婷综合五月天| 欧美三级电影在线观看| 亚洲免费高清视频在线| 成人高清视频在线| 国产午夜亚洲精品理论片色戒| 久久精品国产久精国产爱| 欧美日韩国产成人在线91| 一区二区三区欧美亚洲| 99久久精品情趣| 国产精品人成在线观看免费| 国产精品资源网| 国产欧美视频一区二区三区| 国产在线视频不卡二| 日韩三级视频在线观看| 蜜芽一区二区三区| 制服.丝袜.亚洲.另类.中文| 亚洲成人免费在线观看| 欧美系列日韩一区| 亚洲高清不卡在线观看| 欧美亚洲禁片免费| 亚洲国产sm捆绑调教视频| 欧洲精品一区二区| 亚洲va中文字幕| 91精品国产色综合久久ai换脸| 免费欧美高清视频| 精品少妇一区二区三区在线播放 | 国产精品网曝门| av动漫一区二区| 亚洲三级久久久| 欧美伊人精品成人久久综合97| 亚洲国产精品人人做人人爽| 精品婷婷伊人一区三区三| 亚洲va欧美va人人爽| 91精品国产手机| 国产自产高清不卡| 国产精品精品国产色婷婷| 91小视频免费观看| 一区二区三区**美女毛片| 欧美在线观看一区| 蜜臀av性久久久久蜜臀aⅴ| 精品乱人伦一区二区三区| 国产成人av一区| 亚洲品质自拍视频| 在线成人小视频| 国产精品中文欧美| 一区二区三区欧美日韩| 欧美日韩在线精品一区二区三区激情| 日韩国产成人精品| 国产无人区一区二区三区| 成人动漫av在线| 亚洲福利一区二区三区| 精品粉嫩aⅴ一区二区三区四区| 国产成人av电影在线观看| 亚洲精品中文在线影院| 91精品国产综合久久久久久漫画| 九色porny丨国产精品| 国产精品国产馆在线真实露脸| 欧美亚洲精品一区| 国产尤物一区二区在线 | 蜜桃免费网站一区二区三区| 欧美激情一区二区三区不卡 | 国产精品另类一区| 欧美日韩精品一区二区三区蜜桃| 精品在线你懂的| 尤物在线观看一区| 26uuu亚洲| 欧美系列日韩一区| 国产69精品久久久久777| 亚洲gay无套男同| 中文字幕欧美日韩一区| 欧美日韩亚洲丝袜制服| 国内精品第一页| 亚洲第一会所有码转帖| 久久久.com| 亚洲精品乱码久久久久久久久| 日韩欧美国产1| 欧美性色综合网| 91网站最新地址|