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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? kbusb.asm

?? 該程序?yàn)閁SB HUB程序
?? ASM
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
.send_error: 
	mov		A,[usb_tx_flags]
	and		A,~TX_KBD_MASK                                    
    or     A,USB_REPORT_ERROR                      ; there's currently an error,
    mov     [usb_tx_flags],A
    mov     [usb_current_state],A                   ; mark as such
.exit:
    ret


;========================================================================
; FUNCTION:usbkey_putkey 
;
;handles key presses in usb environment.
;
; This function is called from within the key scanning loop, each time a
; valid key event has been recognized.  A key event is defined as whenever 
; an individual key changes state, either up or down.  the key is 
; identified by a unique number in the accumulator  from 1 to XXX, 
; where XXX is GENERALLY the corresponding AT101 keyboard number, with
; few execptions (see at101.inc).
;========================================================================


usbkey_putkey:
   call    usb_alternate_key
   jc     .done_putkey
    
    call    ksc_modifier                           ;check for a modifier
    jnc      .non_modifiers
    
	mov		A,[usb_tx_flags]
	and		A,~TX_KBD_MASK
 	or		A, USB_REPORT_KEY                      ; show that a report is required
	mov		[usb_tx_flags], A
    mov     A,[ksc_mod0]
    mov     [usb_last_mod],A
    jmp     .done_putkey

.non_modifiers:
    index   usb_usage_table
	push	X                                       ; save X on stack
	push	A                                       ; save key code on stack

	
	mov		A,[usb_tx_flags]
	and		A,~TX_KBD_MASK
	or		A, USB_REPORT_KEY                       ; show that a report is required
	mov		[usb_tx_flags], A

	mov		A, [ksc_down_up]
	cmp		A, 0
	jnz		.add_key_to_buffer				        ; key down
													; otherwise, key is up


.remove_key_from_buffer:                            ; key is up, so remove if from buffer
	mov		A, [usb_key_count]
	cmp		A, 0                                    ; decrement key count (unless it's 0)
	jz		.skip_decrement_key_count
	dec		[usb_key_count]
.skip_decrement_key_count:
	mov		X, 2
.find_key_in_buffer:                                ; find the key in the report buffer
	pop		A
	push	A
	cmp		A, [X + usb_report_buffer]
	jz		.clear_buffer_position
	inc		X
	mov		A, X
	cmp		A, 8
	jc		.find_key_in_buffer
	pop		A
	jmp		.non_modifiers_done                     ; done search

.clear_buffer_position:                             ; key found in buffer, so clear position
	pop		A
	mov		A, 0
	mov		[X + usb_report_buffer], A
	jmp		.non_modifiers_done

	
.add_key_to_buffer:                                 ; key went down, so put it in the buffer
	mov		A, [usb_key_count]
	cmp		A, FFh                                  ; increment key count (unless it's 255)
	jz		.skip_increment_key_count
	inc		[usb_key_count]
.skip_increment_key_count:
	mov		X, 2
.find_free_buffer_position:                         ; find a free buffer position
	mov		A, 0
	cmp		A, [X + usb_report_buffer]
	jz .put_key_in_buffer_position
	inc		X
	mov		A, X
	cmp		A, 8
	jc		.find_free_buffer_position
	pop		A
	jmp		.non_modifiers_done                     ; could not find a free position
						                            ; more than 6 keys pressed

.put_key_in_buffer_position:                        ; found a free buffer position, so put key code there
	pop		A
	mov		[X + usb_report_buffer], A

.non_modifiers_done:
	pop		X  

.done_putkey:
    ret  


    XPAGEOFF

;tables for alternate keys

;lookup table for special keys.  The keys in this table
;are treated differently.
alt_key_table:
    db      AT101KB_SLEEP,AT101KB_POWER,AT101KB_WAKE
	db		AT101KB_MUTE,AT101KB_VOL_INC,AT101KB_VOL_DEC,AT101KB_PLAY_PAUSE
	db		AT101KB_STOP,AT101KB_SCAN_PREV,AT101KB_SCAN_NEXT,AT101KB_EMAIL,
	db		AT101KB_CALCULATOR,AT101KB_WWW_SEARCH,AT101KB_WWW_HOME,AT101KB_WWW_FAVORITES

;each key above is represented in a report as a single bit -- 1 == pressed.
;this table contains the masks for the bits representing each key

bit_mask_table:
    db   1,2,4,
    db  1,2,4,8
	db  10h,20h,40h,80h
	db  1,2,4,8

;each key's bit mask must be applied to the data byte corresponding to it.
;this table points to the data byte's position in RAM.

pointer_table:
	db usb_power_keys,usb_power_keys,usb_power_keys,
	db usb_mm_keys,usb_mm_keys,usb_mm_keys,usb_mm_keys
	db usb_mm_keys,usb_mm_keys,usb_mm_keys,usb_mm_keys
	db usb_mm_keys+1,usb_mm_keys+1,usb_mm_keys+1,usb_mm_keys+1



    XPAGEON



NUM_POWER_KEYS:		equ 3
NUM_CONSUMER_KEYS:	equ 12
NUM_ALT_KEYS:    equ NUM_POWER_KEYS + NUM_CONSUMER_KEYS



;========================================================================
; FUNCTION:usb_power_key 
;
;handles power, sleep, and wake key presses in usb environment.
;
; This function was invented to trap the power, sleep, and wake key presses
; and maintain a single byte whose format is as follows:
;
; bit 1:  1 = power key pressed
; bit 2:  1 = sleep key pressed
; bit 3   1 = wake key pressed
;
; if any of these three keys changes state, the corresponding bit in the
; bit field is modified and the usb_power_flag is set to indicate that the
; state of the power keys has changed.
;========================================================================

usb_alternate_key:

    mov     [ksc_work],A                            ;store key in work byte
    mov     A,(NUM_ALT_KEYS - 1)                   ;initialize A to number of power keys
.lp1:
    push    A                                       ;save index
    index   alt_key_table							;get lookup
    cmp     A,[ksc_work]                            ;compare to key
    pop     A                                       ;restore index
    jz      .lp2                                    ;compare was a success, key found
    dec      A          
    jnc     .lp1									;
	CLEARC
	jmp		.exit									;done, get out

.lp2:
	;A contains index of found alternate key
	push	X										;save X
	push	A										;save index
	index   pointer_table							;get locale of buffer
	mov		X,A										;init X to buffer location
	pop		A										;retrieve index
	index	bit_mask_table							;now get bit mask into A
	push	A										;save it 
	mov		A, [ksc_down_up]						; depending on if key went
	cmp		A, 00h                                  ; up or down
	pop		A                                       ; restore bit pattern
	jz		.mod0_up                                ; key went down
	or		[X + 0], A                              ; set bit
	jmp		.done_putkey
.mod0_up:									        ; else, key went up
	cpl                                             ; so clear bit
	and		[X + 0], A       
.done_putkey:
	mov		A,X										;get buffer pointer
	cmp		A,usb_power_keys						;if pointing at power buffer,
	mov		A,TX_POWER_MASK							;set power flag
	jz		.set
	mov		A,TX_MM_MASK							;else set MM flag
.set:                                    
	pop		X										;restore X
    or     [usb_tx_flags],A							;set flag
    SETC											;set carry indicating key found
.exit:
	mov		A,[ksc_work]							;restore key code
 	ret												;and out


    


    XPAGEOFF

usb_usage_table:
	db			000h,035h,01eh,01fh,020h,021h,022h,023h	;0-7
	db			024h,025h,026h,027h,02dh,02eh,000h,02ah	;8-15
	db			02bh,014h,01ah,008h,015h,017h,01ch,018h	;16-23
	db			00ch,012h,013h,2fh,030h,031h,039h,004h	;24-31
	db			016h,007h,009h,00ah,00bh,00dh,00eh,00fh ;32-39
	db			033h,034h,032h,028h,0e1h,064h,01dh,01bh	;40-47
	db			006h,019h,005h,011h,010h,036h,037h,038h	;48-55
	db			000h,0e5h,0e0h,000h,0e2h,02ch,0e6h,000h	;56-63
	db			0e4h,000h,000h,000h,000h,000h,000h,000h ;64-71
	db			000h,000h,000h,049h,04ch,000h,000h,050h ;72-79
	db			04ah,04dh,000h,052h,051h,04bh,04eh,000h	;80-87
	db			000h,04fh,053h,05fh,05ch,059h,000h,054h	;88-95
	db			060h,05dh,05ah,062h,055h,061h,05eh,05bh	;96-103
	db			063h,056h,057h,000h,058h,000h,029h,000h	;104-111
	db			03ah,03bh,03ch,03dh,03eh,03fh,040h,041h	;112-119
	db			042h,043h,044h,045h,046h,047h,048h,0e3h	;120-127
	db			0e7h,065h,066h,067h,068h,000h,000h,000h	;128-235

    XPAGEON

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品国产综合久久久久久漫画 | 国产精品剧情在线亚洲| 99re成人精品视频| 日精品一区二区三区| 国产精品每日更新| 337p亚洲精品色噜噜噜| 不卡区在线中文字幕| 九九国产精品视频| 亚洲国产综合在线| 国产精品看片你懂得| 精品黑人一区二区三区久久| 欧美日韩在线综合| av在线这里只有精品| 韩国三级中文字幕hd久久精品| 亚洲一卡二卡三卡四卡五卡| 国产精品每日更新| 久久久久久久久久久电影| 在线不卡中文字幕| 欧美亚洲高清一区| 色狠狠色噜噜噜综合网| 成人免费视频网站在线观看| 久久99国产精品久久| 日本一区中文字幕| 丝袜a∨在线一区二区三区不卡| 一区二区三区国产豹纹内裤在线| 国产精品久久久久久久久图文区| 2021国产精品久久精品| 欧美一区二区三级| 欧美日韩一区二区三区免费看| 91麻豆免费在线观看| 成人污视频在线观看| 国产91精品一区二区麻豆网站| 免费高清视频精品| 秋霞午夜av一区二区三区| 五月激情六月综合| 婷婷丁香久久五月婷婷| 亚洲成人一区二区在线观看| 亚洲一区二区三区免费视频| 依依成人综合视频| 亚洲精品视频免费看| 亚洲精品乱码久久久久久黑人| 国产精品剧情在线亚洲| 综合久久久久综合| 亚洲视频在线观看一区| 亚洲精品乱码久久久久久日本蜜臀| 亚洲视频图片小说| 一区二区三区久久| 亚洲一区二区av在线| 午夜影院久久久| 丝袜诱惑亚洲看片| 久久99精品久久久| 国产高清视频一区| 99re这里只有精品6| 欧洲精品在线观看| 欧美区在线观看| 日韩亚洲国产中文字幕欧美| 久久日韩粉嫩一区二区三区| 国产日产亚洲精品系列| 国产精品久久久久久久浪潮网站 | 国产激情一区二区三区桃花岛亚洲| 美女任你摸久久| 国产精品一区二区视频| 成人免费观看男女羞羞视频| 91香蕉视频mp4| 欧美日韩综合在线| 日韩欧美电影一二三| 国产性做久久久久久| 亚洲欧美另类久久久精品2019| 亚洲动漫第一页| 久久99国产精品成人| 99视频国产精品| 欧美日韩你懂得| 国产日韩精品视频一区| 亚洲一区在线视频观看| 久久99最新地址| 97久久精品人人爽人人爽蜜臀| 欧美亚洲免费在线一区| 欧美成人一区二区三区在线观看 | 欧美一区二区三区思思人| 亚洲精品一区二区三区精华液| 中文字幕不卡三区| 日韩黄色免费电影| 成人深夜福利app| 7777精品伊人久久久大香线蕉的 | 亚洲一区在线观看免费| 另类调教123区| 粉嫩aⅴ一区二区三区四区| 欧美色成人综合| 欧美韩国日本一区| 日韩国产一二三区| 成人app网站| 日韩免费成人网| 亚洲精品免费看| 国产成人aaaa| 69堂亚洲精品首页| 国产精品成人免费| 久久99日本精品| 欧美日韩中文另类| 国产精品成人免费精品自在线观看 | 久久综合久久综合久久综合| 亚洲伦理在线免费看| 国产成人日日夜夜| 日韩午夜精品视频| 一级日本不卡的影视| 成人综合婷婷国产精品久久蜜臀 | 精品一区二区三区欧美| 色哟哟在线观看一区二区三区| 精品国产1区二区| 午夜久久福利影院| 色视频成人在线观看免| 国产精品美女久久久久久| 精品在线观看视频| 91精品国产综合久久小美女| 一二三四社区欧美黄| 成人av手机在线观看| 久久久久久一级片| 久久福利视频一区二区| 欧美久久免费观看| 亚洲一区二区三区视频在线| 一本久久a久久免费精品不卡| 国产欧美精品一区二区色综合| 老司机午夜精品| 欧美一级片免费看| 日本不卡不码高清免费观看| 欧美日韩综合在线免费观看| 一区二区三区视频在线看| 99国产精品一区| 国产精品久久综合| 成人免费视频app| 欧美极品aⅴ影院| 国产精品一二三四区| 久久这里只有精品视频网| 久久成人羞羞网站| 日韩网站在线看片你懂的| 日韩高清不卡一区二区| 777欧美精品| 麻豆精品一区二区av白丝在线| 91麻豆精品国产自产在线观看一区| 亚洲午夜成aⅴ人片| 欧美日韩国产成人在线免费| 亚洲综合偷拍欧美一区色| 欧洲另类一二三四区| 亚洲成人免费观看| 91精品国产色综合久久| 精品中文字幕一区二区小辣椒 | 国产欧美日韩在线视频| 国产精品一区二区男女羞羞无遮挡| 26uuu久久天堂性欧美| 国产精品一区二区在线看| 日本一区二区免费在线| 成人av影视在线观看| 亚洲一区在线观看网站| 日韩一区二区电影在线| 精品一区二区免费视频| 国产视频一区二区三区在线观看| 成人污污视频在线观看| 亚洲精品成人a在线观看| 欧美日韩一区小说| 精品一区二区日韩| 《视频一区视频二区| 欧美午夜不卡视频| 久久精品99久久久| 国产精品理论片在线观看| 欧美在线影院一区二区| 日韩精品电影在线| 久久久久国产精品麻豆 | 久久亚洲精华国产精华液| 国产精品一级黄| 亚洲精品国产一区二区三区四区在线| 欧美日韩综合色| 国产精品小仙女| 亚洲综合久久久久| 欧美大片日本大片免费观看| 成人污视频在线观看| 亚洲成人精品一区| 国产日韩欧美精品电影三级在线| 在线观看日韩高清av| 久久99在线观看| 一个色综合网站| 久久久久国产精品麻豆ai换脸| 在线免费观看日本欧美| 久久福利资源站| 亚洲午夜久久久久久久久电影院 | 亚洲精品一二三| 精品国产在天天线2019| 在线观看免费一区| 国产激情一区二区三区四区| 午夜视频一区在线观看| 国产精品久久久久久久午夜片| 日韩一区二区三区在线视频| 99精品一区二区三区| 精品一区二区三区蜜桃| 亚洲综合在线视频| 国产欧美日韩视频一区二区| 3d成人h动漫网站入口| 99re视频精品| 国产91露脸合集magnet| 美女脱光内衣内裤视频久久影院| 亚洲激情图片小说视频| 久久人人超碰精品|