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

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

?? ps2_io.asm

?? Cypress 的(鼠標(biāo)+鍵盤)復(fù)合設(shè)備匯編源程序
?? ASM
字號(hào):
;========================================================================
;   FILE: ps2_io.asm
;
;   This file contains the code that sends/receives data via the 
;   D- and D+ output pins, in ps2 format
;REVISION_HISTORY:
;
;8/25/98 Added a 50 usec delay prior to sending commands. 
;Some PC's did not like it without this delay.
;
;
;========================================================================
;
;defines for the 4 combinations of clock and data

CLKH_DATAH:                  equ     DPH_DMH
CLKL_DATAH:                  equ     DPL_DMH
CLKH_DATAL:                  equ     DPH_DML
CLKL_DATAL:                  equ     DPL_DML


;========================================================================
; FUNCTION: ps2_send
;
; Sends a byte 
;
;
; Returns: 
;   C= 0 if transmission was successful
;   C= 1 if not
;
;========================================================================



ps2_send:
    push    A                                   ;save our data byte                    
    push    X                                   ;save X register

    mov     X,A                                 ;save data byte momentarily in X               
    iord    USB_STATUS_CONTROL_REG              ;get clock/data pair
    and     A,(PS2_CLOCK_BIT + PS2_DATA_BIT)    ;mask off other bits in port
    cmp     A,(PS2_CLOCK_BIT + PS2_DATA_BIT)    ;if both are not high,
    jz      .l1            
    SETC
    jmp     .exit                               ;exit this routine with carry set

.l1:
    DELAY   50
    call    send_0                              ;clock out start bit
    jc      .exit                               ;if a problem, quit now
    mov     A,1
    mov     [ps2_temp0],A                       ;keep track of parity
    mov     A,X                                 ;get back our data byte
    mov     X,8                                 ;count 8 bits
.l2:
    asr     A                                   ;shift bit to send into carry
    jc      .one                                ;if carry is zero
    call    send_0                              ;send a zero
    jc      .exit                               ;problem, quit now
    jmp     .next                               ;
.one:                                           ;else
    call    send_1                              ;  send a 1
    jc      .exit                               ;  problem, quit now
    inc     [ps2_temp0]                         ;  keep track of parity
.next:                                          ;
    dec     X                                   ;decrement counter
    jz      .parity                             ;if at zero do parity
    jnc     .l2                                 ;if -1, exit

 .stopbit:
    call    send_1                              ;clock out stop bit  
    CLEARC
    jmp     .exit

.parity:
    mov     A,[ps2_temp0]                      ;now send parity too
    jmp     .l2

.exit:
    mov     A,CLKH_DATAH                       ;make sure PS2 bus is left idle
    iowr    USB_STATUS_CONTROL_REG
    pop     X
    pop A
    ret                                        ;return



;========================================================================
; FUNCTION: send_0,send_1
;
; Sends bit out the ps2 port
;
;
; Returns: 
;   C= 0 if transmission was successful
;   C= 1 if not
;
;========================================================================



;
;the following state table defines the next state for the clock-data pair
;to clock out a given bit.
;
XPAGEOFF
drive_table:
        db          0,0,0,CLKH_DATAL,0,CLKL_DATAL,CLKH_DATAH,CLKL_DATAH
XPAGEON



send_1:
    push    A
    mov     A,CLKH_DATAH                        ;start with clock high, data high
    jmp     clock
send_0:
    push    A
    mov     A,CLKH_DATAL                        ;start with clock high, data low

clock:
    push    A
    iord    USB_STATUS_CONTROL_REG              ;read clock
    and        A,PS2_CLOCK_BIT            
    pop     A    
    jnz     .l2
    SETC
    pop     A                                          ;should be high
    ret
.l2:
    iowr    USB_STATUS_CONTROL_REG              ;set up register
    DELAY    5 
    index   drive_table                         ;wait 5 us
    iowr    USB_STATUS_CONTROL_REG              ;write it out
    DELAY    35                                 ;delay as per spec
    index   drive_table                         ;deassert clock
    iowr    USB_STATUS_CONTROL_REG
    DELAY    30                                 ;wait as per spec
    CLEARC
    pop    A
    ret

;========================================================================
; FUNCTION: getbit
;
; Receives  a bit
;
;
; Returns: 
;   C = state of bit clocked in
;
;========================================================================
getbit:
    push    A                               ;push A
    iord    USB_STATUS_CONTROL_REG          ;if inhibit, get out now
    and     A,PS2_CLOCK_BIT
    jz      .error
    mov     A,CLKL_DATAH                    ;start with clock low, data high
    iowr    USB_STATUS_CONTROL_REG          
    DELAY    35                             ;wait 35 usec
    mov     A,CLKH_DATAH                    ;raise clock line
    iowr    USB_STATUS_CONTROL_REG          ;
    DELAY    5                              ;wait 5 usec 
    iord    USB_STATUS_CONTROL_REG          ;read the data line
    DELAY    30                             ;wait 25 usec
    and    a,  PS2_DATA_BIT                 ;mask off all but data bit
    jz      .low                            ;if data bit high,
    SETC                                    ;set the carry
.low:
    pop     A                               ;pop acc and rotate carry into msb
    rrc     A
    CLEARC                                  ;clear carry indicating success
    ret                                     ;return
.error:
    pop     A
    SETC
    ret
    


   


;========================================================================
; FUNCTION: ps2_receive
;
; Receives a byte 
;
;
; Returns: 
;   C= 0 if reception was successful
;   C= 1 if not
;
;========================================================================



ps2_receive:
    push    X                                   ;save X, we'll wipe it out

    mov     X,18                                ;do the following 18 times:
.wait:                                          ;
    DELAY   7                                   ;kill time for 7 us
    iord    USB_STATUS_CONTROL_REG              ;get port 3 data
    and     A,PS2_DATA_BIT                      ;make sure data bit low
    jnz      .exitearly                         ;out now if not
    dec     X                                   ;wait again
    jnz     .wait                               ;
                                                ;above loop consumes approx 180 us.

.start:
    

;    DELAY    5                                  ;wait prior to anything
    mov     X,8                                 ;count 9  bits (8 data, 1 parity)
    mov     A,0                                 ;clear parity count
    mov     [ps2_temp0],A

.l1:
    call    getbit
    jc      .inhibit                            ;if not inhibiting
    cmp     A,80h                               ;see if msbit = 1
    jc      .next                               ;yup,
    inc     [ps2_temp0]                         ;increment parity count
.next:
    dec     X                                   ;decrement counter
    jc      .done                               ;if at -1, done    
    jnz     .l1    
    push    A                                   ;else save partial result
    jmp     .l1

.inhibit:                                       ;we were inhibited in
    dec     X                                   ;the middle of getting stuff,
    jc     .done                               ;adjust stack appropriately
    push    A
.done:
    
    ;arrive here with data byte on the stack and the received parity bit in the msb
    ;of the accumulator. the calculated parity bit is in the lsb of ps2_temp0.
    ;if we arrived here due to host inhibit, both parity and data byte are
    ;garbage but that's ok -- we'll abort out of this routine anyway.
    mov     A,[ps2_temp0]                        ;
    and     A,1
    mov     X,A
                                                 ;X should be 1 if ok

    call    getbit                               ;get stop bit
    jc     .error                                ;if no problem getting it
    rlc     a                           
    jc     .ack                                 ;if it's not a 1
    mov     X,0                                  ;X= 0 indicates an error

.badstop:                                       ;
    call    getbit                              ;keep looking for it
    jc      .error
    rlc     a
    jnc    .badstop

.ack:
                                                ;arrive here with x = 0 if no errors
    call    send_0                              ;send a 0 to ack the transaction
    mov     A,X
    cmp     A,0
    jz     .error

.exit:
    mov     A,CLKH_DATAH                        ;make sure PS2 bus is left idle
    iowr    USB_STATUS_CONTROL_REG
	jmp	.return

.error:
    mov     A,CLKH_DATAH                        ;make sure PS2 bus is left idle
    iowr    USB_STATUS_CONTROL_REG
	SETC                                         ;set carry indicating a problem
.return:
    pop     A                                    ;pop result into ACC  
    pop     X                                    ;restore X
    ret
 .exitearly:
    SETC
    pop     X
    ret





?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧美日韩一区二区 | 国产福利一区二区三区视频在线| 波多野结衣91| 国产日韩欧美在线一区| 麻豆91免费看| 精品国产91洋老外米糕| 丝袜亚洲另类欧美综合| 欧美精品少妇一区二区三区 | 在线电影院国产精品| 一片黄亚洲嫩模| 欧美性大战久久久久久久| 亚洲欧美另类久久久精品2019| 成人网在线播放| 成人欧美一区二区三区黑人麻豆| 菠萝蜜视频在线观看一区| 欧美国产97人人爽人人喊| av成人免费在线观看| 亚洲欧美日韩一区二区 | 亚洲精品视频一区| 欧美日本一区二区| 奇米色777欧美一区二区| 久久精品一区二区三区四区| 成人中文字幕电影| 一区二区三区精品在线观看| 欧美精品亚洲一区二区在线播放| 久久国产精品露脸对白| 国产精品午夜春色av| 欧美在线free| 国产精品一二三四五| 亚洲综合另类小说| 久久免费午夜影院| 欧美日韩视频专区在线播放| 精品亚洲成av人在线观看| 国产精品麻豆网站| 精品国产人成亚洲区| 日本黄色一区二区| 国产91丝袜在线播放0| 亚洲成a人v欧美综合天堂| 国产精品毛片大码女人| 911国产精品| 欧美视频你懂的| 99精品欧美一区二区蜜桃免费 | 天天av天天翘天天综合网色鬼国产| 成人国产精品免费观看动漫| 美女一区二区三区在线观看| 一区二区三区av电影| 国产日韩欧美精品电影三级在线 | 欧美无砖砖区免费| 成人免费观看av| 国产精品一区一区| 久久成人综合网| 麻豆一区二区三| 精品一区二区免费看| 日韩精品免费视频人成| 首页国产欧美日韩丝袜| 亚洲午夜久久久久久久久久久| 亚洲色图19p| 亚洲女人****多毛耸耸8| 国产精品入口麻豆九色| 国产三级精品在线| 日韩美女视频19| 亚洲午夜视频在线观看| 亚洲第一久久影院| 久久精品免费观看| 国产精品888| 色播五月激情综合网| 欧美性受xxxx黑人xyx性爽| 欧美酷刑日本凌虐凌虐| 欧美岛国在线观看| 国产欧美日韩视频一区二区 | 精品国产一区二区亚洲人成毛片| 精品国产乱码久久久久久影片| 国产亚洲精品aa| 亚洲一区在线电影| 国产在线不卡一卡二卡三卡四卡| 国产成人午夜视频| 欧美影院一区二区| 国产欧美日韩精品一区| 亚洲国产美女搞黄色| 精品一区二区三区免费观看| 成人av先锋影音| 欧美成人精品二区三区99精品| 亚洲国产日韩av| 国产精品亚洲а∨天堂免在线| 在线观看成人小视频| 日韩欧美美女一区二区三区| 亚洲欧美日韩国产综合| 国产一区二区电影| 欧美一区二区三区爱爱| 自拍视频在线观看一区二区| 国内精品久久久久影院一蜜桃| 欧美日韩亚洲综合一区| 中文字幕一区二区三区四区 | 波多野结衣中文字幕一区| 欧美精品1区2区| 香蕉久久夜色精品国产使用方法| 成人高清免费观看| 中文天堂在线一区| 国产福利一区二区| 精品国产一区二区亚洲人成毛片| 日韩国产高清影视| 在线成人av影院| 日韩福利电影在线| 国产精品第五页| 成人一区二区在线观看| 国产精品久久久久久久久免费丝袜 | 99精品视频中文字幕| 亚洲最大成人综合| 奇米888四色在线精品| www.日本不卡| 一区二区三区精品| 欧美美女一区二区在线观看| 日本sm残虐另类| 26uuu色噜噜精品一区| 日本aⅴ免费视频一区二区三区| 91精品国产综合久久久久久漫画| 久久国产三级精品| 欧美国产精品中文字幕| 欧美亚洲动漫另类| 国产一区二区免费在线| 亚洲男同性恋视频| 欧美一区二区福利在线| 国产成人免费网站| 日韩精品亚洲专区| 国产欧美一区二区精品性色超碰| 99久久99久久久精品齐齐| 国产成人福利片| 亚洲色图欧美在线| 精品乱人伦一区二区三区| av爱爱亚洲一区| 蜜桃久久久久久久| 亚洲日本乱码在线观看| 久久亚洲免费视频| 在线播放视频一区| 一本大道久久精品懂色aⅴ| 国产在线播放一区| 亚洲h精品动漫在线观看| 国产精品欧美精品| 26uuu色噜噜精品一区| 欧美日韩亚洲国产综合| gogo大胆日本视频一区| 激情av综合网| 美女诱惑一区二区| 五月天视频一区| 亚洲 欧美综合在线网络| 亚洲女同一区二区| 中文字幕视频一区二区三区久| 久久综合久色欧美综合狠狠| 884aa四虎影成人精品一区| 色综合久久久久网| 99riav一区二区三区| 成人免费观看av| 91在线云播放| 在线免费观看视频一区| 色素色在线综合| 欧美又粗又大又爽| 4438成人网| 日韩精品一区二区三区老鸭窝| 欧美电影免费观看高清完整版| 日韩欧美一级精品久久| 久久综合九色综合97_久久久| 久久一区二区三区国产精品| 国产欧美日韩中文久久| 成人免费一区二区三区视频| 亚洲视频在线一区观看| 亚洲制服丝袜一区| 久久99精品久久久久久动态图 | 亚洲国产精品久久艾草纯爱| 亚洲一区二区综合| 国产一区二区三区在线看麻豆| 国产成人午夜高潮毛片| 欧美亚洲国产一区在线观看网站 | 亚洲欧美在线视频观看| 亚洲成人资源网| 国产呦萝稀缺另类资源| 91麻豆swag| 久久午夜羞羞影院免费观看| 亚洲欧美经典视频| 日本亚洲视频在线| 91在线观看成人| 国产亚洲一区二区三区| 日韩av一二三| 色婷婷av一区二区三区大白胸| 久久精品一区二区三区av| 日韩电影在线观看网站| 色婷婷综合五月| 国产精品护士白丝一区av| 伦理电影国产精品| 欧美日韩免费在线视频| 亚洲六月丁香色婷婷综合久久 | 舔着乳尖日韩一区| 91麻豆swag| 亚洲免费观看高清完整版在线观看熊 | 色婷婷精品久久二区二区蜜臂av | 91精品国产综合久久福利| 亚洲女爱视频在线| 色88888久久久久久影院野外| 中文字幕+乱码+中文字幕一区| 韩国一区二区三区| 国产目拍亚洲精品99久久精品|