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

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

?? ps2main.asm

?? 該程序為USB HUB程序
?? ASM
?? 第 1 頁 / 共 2 頁
字號:
    call    ps2_wait_byte						;get  rate/delay byte
    cmp     A,0EDh                              ;is it another command?
    jnc      ps2_start_command                  ;yes, go process it
    cmp     A,80h								;if out of range
    jc      .l0                                            
    call    ps2_invalid_command                 ;tell the host and
    jmp     .strd0                              ;wait for another try    
.l0:
    push    A
    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
    pop     A
	call   check_device_id						;check for id
    jmp     endswitch

;========================================================================
; FUNCTION: check_device_id
;
; Checks for the presence of the sequence of commands:
; F3 7C F3 00 F3 01
;
;========================================================================
XPAGEOFF

SEND_ID: equ 4
id_table: db 01h,00h,07ch
end_id_table:

kbd1_tbl: db 041h,0e1h,010h,0e1h
end_kbd1_table:

kbd2_tbl: db 042h,0e1h,010h,0e1h

XPAGEON
ID_TABLE_LEN: EQU (end_id_table - id_table)
KBD_TABLE_LEN: EQU  (end_kbd1_table - kbd1_tbl)

check_device_id:
	push	A								;save A and X
	push	X								;
	mov		[ps2_temp1],A					;save typematic parameter 
    cmp     A,07ch                          ;if == first in sequence,
    mov     A,ID_TABLE_LEN-2
    jz      .exit                           ; get out with proper state set
	mov		A,[ps2_id_state]				;get current state of id
	index	id_table						;retrieve byte we are expecting

	cmp		A,[ps2_temp1]					;compare it with one we got
    mov     A,ID_TABLE_LEN-1
	jnz		.exit  							;if it compares,
    mov     A,[ps2_id_state]
    dec     A
    jnc     .exit
    mov     a,[ps2key_key_count]            ;see if theres room for 4 bytes
                                            ;in key buffer
    cmp     a,BUFFER_LEN-4                
    jc     .xmt
    call    put_error                       ;no, put error code instead
    jmp     .exit1                          ;and quit
.xmt:                                       ;else yes,
	mov		X,KBD_TABLE_LEN-1				;prepare to send id bytes

.loop:
	mov		A,[dual_ifc_option]				;depending upon the keyboard
	and		A,KEYBOARD_ID_BIT
	mov		A,X
	jz		.kbd1
.kbd2:
	index	kbd2_tbl						;send kbd #2 id
	jmp		.send
.kbd1:	
	index   kbd1_tbl						;or send kbd #1 id
.send:
    call    putch                           ;put it into the key queue                    
	dec		X								;decrement ptr
    jnc     .loop
.exit1:
    mov     A,ID_TABLE_LEN-1
.exit:
    mov     [ps2_id_state],A                ;update id state
	pop		X
	pop		A
	ret



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

ps2_enable:

   SETBIT   PS2_SCAN_KBD,ps2_flags              ;enable scanning
   call     ps2_ack_byte                        ;ack the byte
   jmp      endswitch


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

ps2_default_disable:
; 
;   CLRBIT  PS2_SCAN_KBD,ps2_flags             ;disable scanning       

ps2_set_default:
    call    ps2key_set_default_key_types                     
    call    ps2_ack_byte                       ;ack the byte
    jmp     endswitch

IFDEF   SCANSET3
;========================================================================
; 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
    jmp     endswitch

ENDIF

;========================================================================
; FUNCTION: ps2_resend
;
;
; sets resend bit
;
; Returns:
;   C: 0 
;
;========================================================================

ps2_resend:
    mov	A,[ps2_last_xmit]				;get last byte sent
	call	ps2_put_byte				;queue it for retransmission
    jmp     endswitch

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



ps2_reset:
    call    ps2_ack_byte                         ;queue an ACK

.rloop:				;loop until the ack is successfully transmitted or the host aborts
	iowr	WATCHDOG_REG
	iord    PS2_PORT
	and     A,PS2_DATA_BIT                      ;check data line
	jz      .exit                               ;if host xmit request, abort Reset

	TSTBIT  PS2_XMIT,ps2_flags	;ACK still pending?
	jz	.r2				;if not, we're done
	call	ps2_send_byte
	jmp	.rloop

.r2:
    CLRBIT  PS2_RESET_FLAG,ck_flags
;   jmp     Start                               ;soft restart
    
.exit:
    jmp     endswitch

IFDEF   SCANSET3
;========================================================================
; 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
   jmp     endswitch

ENDIF

;========================================================================
; 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:
    ;upon entry to this routine, ps2_delay contains the count, in 2msec increments,
    ;of time we should spend in the BAT routine.

    mov     A,[ps2_delay]           ;get time remaining for BAT test (2msec per bit)
    cmp     A,0                     ;if time has expired
    jz      .exit                   ;bag it now
    ;leds on
    mov     A,(CAPS_LOCK_LED + SCROLL_LOCK_LED + NUM_LOCK_LED)
    call    ksc_writeLED
    mov     A,[dual_ifc_1ms]        ;get 1msec counter
    add     A,[ps2_delay]           ;advance it by the amount in ps2_delay
.l1:
    iowr    WATCHDOG_REG
    cmp     A,[dual_ifc_1ms]           ;consume time   
    jnz     .l1
    add     A,[ps2_delay]           ;half the required time has expired, so re-init
 .l2:                               ;  and  consume  time again
    iowr    WATCHDOG_REG
    cmp     A,[dual_ifc_1ms]
    jnz     .l2   
    mov     A,0
    call    ksc_writeLED
.exit:
    mov     A,BAT_PASS
    ret


;========================================================================
; FUNCTION: ps2_put_byte
; Queue a new byte for transmission
;
;========================================================================

ps2_put_byte:
    push     X                          ;save X
    mov     X,A                         ;save the byte to X
	mov	A,ps2_xmt_buf			;A = buffer base
	add	A,[ps2_xmt_in]		;add index
	swap	A,X				;x = ram pointer, a = data
	mov	[X+0],a			;save new byte
	inc	[ps2_xmt_in]		;increment index

    SETBIT  PS2_XMIT,ps2_flags                  ;set bit to indicate transmission necessary
    pop     X                           ;pop X register
    ret


;========================================================================
; FUNCTION: ps2_send_byte
; Try to transmit the next byte in the xmt queue.
;
;========================================================================

ps2_send_byte:
	push	A			;save A

	TSTBIT	PS2_XMIT,ps2_flags	;anything to send?
	jz	.exit			;if not, exit

	mov	A,[ps2_xmt_out]	;A = out pointer

	add	a,ps2_xmt_buf	;add buffer base
	push	X			;save X
	mov	X,A			;X --> buffer
	mov	A,[X+0]		;A <-- data byte
	pop	X			;done with X

IFDEF   CombiKB
    DI
ENDIF
	call	ps2_send		;try to send one
IFDEF   CombiKB
    EI
ENDIF

	jc	.exit			;return if unsuccessful

	cmp	A,PS2_RSND
	jz	.sb0			;don't save it if it was a Resend
	mov	[ps2_last_xmit],A	;else, save last transmitted byte

.sb0:	inc	[ps2_xmt_out]	;increment pointer
	mov	A,[ps2_xmt_out]	;get it in A
	cmp	A,[ps2_xmt_in]	;buffer empty?
	jnz	.sb1		;if not, continue
	call	ps2_xmt_flush	;else, reinit pointers
	jmp	.sb1			;be done

.sb1:	mov	A,PS2_SEND_INTERVAL
	mov	[ps2_send_timeout],A			;reset the timeout counter

.exit:
	pop	A			;restore A
	ret


;========================================================================
; FUNCTION: ps2_xmt_flush
; Flush ps2 transmit queue
;
;========================================================================
ps2_xmt_flush:
	push	A			;save A
	mov	A,0
	mov	[ps2_xmt_in],A	;init pointers
	mov	[ps2_xmt_out],A
	CLRBIT	PS2_XMIT,ps2_flags	;init transmit pending flag
	pop	A			;restore A
	ret				;that's it

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
26uuu精品一区二区三区四区在线| 亚洲一区二区三区激情| 亚洲色图20p| 日韩黄色一级片| 成人app网站| 欧美一级高清片在线观看| 中文字幕一区二区三区四区| 久久精品国产亚洲高清剧情介绍 | 亚洲色图在线播放| 美女网站在线免费欧美精品| 国产一区二区免费在线| 91精品国产综合久久国产大片 | 日韩中文字幕一区二区三区| 成人av在线资源| 国产亚洲精品中文字幕| 91在线云播放| 国产三级欧美三级日产三级99| 蜜桃一区二区三区四区| 欧美精品tushy高清| 亚洲综合色网站| 欧美亚洲一区二区在线| 亚洲免费在线电影| 日本韩国精品在线| 亚洲乱码日产精品bd| 91在线小视频| 亚洲精品视频在线看| 91老司机福利 在线| 亚洲三级在线观看| 色天天综合色天天久久| 一区二区三区在线视频观看58| 色8久久精品久久久久久蜜| 亚洲欧美偷拍另类a∨色屁股| 91在线小视频| 亚洲午夜久久久久久久久电影院| 在线免费一区三区| 亚洲综合在线电影| 欧美日韩激情在线| 琪琪久久久久日韩精品| 日韩美女一区二区三区| 国产精品夜夜嗨| 国产精品拍天天在线| 91网站黄www| 亚洲国产一区二区在线播放| 欧美一区二区在线看| 国内一区二区在线| 国产精品福利一区二区| 在线一区二区视频| 日韩电影在线免费看| 精品成人在线观看| 成av人片一区二区| 天天影视涩香欲综合网| 久久影音资源网| 99久久777色| 免费国产亚洲视频| 国产精品久久看| 欧美麻豆精品久久久久久| 精品一区免费av| 亚洲啪啪综合av一区二区三区| 欧美四级电影网| 久久99国产精品久久99| 亚洲欧洲日韩综合一区二区| 欧美久久高跟鞋激| 国产a视频精品免费观看| 亚洲综合激情另类小说区| 日韩视频一区二区在线观看| 成人av网址在线| 奇米影视7777精品一区二区| 国产精品美女一区二区在线观看| 欧美日韩免费高清一区色橹橹 | 成人av在线电影| 亚洲成a人在线观看| 国产亚洲va综合人人澡精品 | 97精品久久久午夜一区二区三区 | 欧美人成免费网站| 丰满白嫩尤物一区二区| 午夜精品久久久久久不卡8050| 久久久久久久国产精品影院| 在线观看91视频| 国产不卡一区视频| 麻豆精品在线视频| 一区二区欧美视频| 中文字幕精品一区二区三区精品| 欧美丰满少妇xxxbbb| 成人精品视频一区二区三区 | 日日夜夜精品视频免费| 国产精品久久久久久户外露出| 欧美一级理论片| 欧美三级在线视频| 91蜜桃婷婷狠狠久久综合9色| 精品一区二区三区香蕉蜜桃 | 亚洲蜜臀av乱码久久精品 | 欧美日韩精品三区| 91一区二区在线| 国产精选一区二区三区| 日韩精品亚洲一区二区三区免费| 亚洲欧美日韩国产成人精品影院| 日本一区二区三区在线不卡| 欧美成人video| 91精品国产福利在线观看| 欧美无砖砖区免费| 91在线观看一区二区| 成人在线综合网站| 成人免费高清在线观看| 国产91丝袜在线播放九色| 美女任你摸久久| 性做久久久久久免费观看欧美| 中文字幕综合网| 亚洲婷婷在线视频| 中文字幕日韩一区| 亚洲欧洲综合另类在线| 亚洲图片你懂的| 亚洲免费三区一区二区| 亚洲女女做受ⅹxx高潮| 一区二区三区欧美在线观看| 亚洲色图.com| 一区二区三区在线观看视频| 一区二区三区在线视频免费| 一区二区高清免费观看影视大全 | 中文字幕在线观看一区二区| 久久一区二区三区四区| xnxx国产精品| 国产欧美久久久精品影院 | 久久亚洲影视婷婷| 国产色91在线| 亚洲色图色小说| 亚洲国产乱码最新视频 | av一二三不卡影片| 99天天综合性| 欧美日韩国产一级二级| 91精品视频网| 国产亚洲精品7777| 亚洲人成亚洲人成在线观看图片| 一级日本不卡的影视| 日韩成人午夜精品| 国产精品一级黄| 欧美亚洲国产怡红院影院| 日韩欧美一区二区视频| 日本一区二区三区电影| 亚洲精品视频在线| 日韩avvvv在线播放| 国产高清不卡二三区| 欧美色视频一区| 欧美大片在线观看| 亚洲天堂免费在线观看视频| 日韩一区精品视频| 国产成人免费视频 | 色综合亚洲欧洲| 日韩一二三四区| 中文字幕在线观看一区| 午夜精品久久久久久久| 国产不卡在线视频| 91麻豆精品国产91久久久久久 | 久久久久国产免费免费| 亚洲免费观看高清完整版在线观看| 亚洲韩国一区二区三区| 国产主播一区二区三区| 在线亚洲免费视频| 精品久久久久久综合日本欧美 | 免费在线视频一区| 99久久精品国产导航| 精品美女一区二区三区| 洋洋av久久久久久久一区| 国产精品1区2区3区| 884aa四虎影成人精品一区| 国产精品超碰97尤物18| 国产美女精品一区二区三区| 欧美日韩一区二区三区高清| 亚洲国产精品精华液ab| 极品少妇xxxx精品少妇偷拍| 欧美图区在线视频| 国产精品传媒视频| 国产福利91精品一区二区三区| 欧美理论片在线| 亚洲最新在线观看| 99精品国产91久久久久久| 国产欧美日韩亚州综合| 狠狠色狠狠色综合日日91app| 欧美影院一区二区| 亚洲视频一区二区免费在线观看| 激情五月激情综合网| 欧美一卡在线观看| 亚洲成人777| 欧美吻胸吃奶大尺度电影| 亚洲欧美自拍偷拍色图| 国产iv一区二区三区| 国产亚洲午夜高清国产拍精品| 另类调教123区| 日韩久久久精品| 久久国产精品99久久久久久老狼| 欧美日韩成人综合| 午夜婷婷国产麻豆精品| 欧美性猛交xxxxxx富婆| 夜夜嗨av一区二区三区中文字幕 | 高清国产一区二区| 久久久久久电影| 国产一区二区三区四区五区美女| 日韩精品中文字幕一区| 久久91精品国产91久久小草| 日韩欧美电影一区| 国产一区二区看久久|