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

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

?? keyboard.s~

?? linux-0.10 對于想了解linux內核,而又不想花太多精力的人,最好就是這種低版本,而具有核心價值的程序
?? S~
字號:
/* *  linux/kernel/keyboard.S * *  (C) 1991  Linus Torvalds *//* *	Thanks to Alfred Leung for US keyboard patches */#include <linux/config.h>.text.globl _keyboard_interrupt/* * these are for the keyboard read functions */size	= 1024		/* must be a power of two ! And MUST be the same			   as in tty_io.c !!!! */head = 4tail = 8proc_list = 12buf = 16mode:	.byte 0		/* caps, alt, ctrl and shift mode */leds:	.byte 2		/* num-lock, caps, scroll-lock mode (nom-lock on) */e0:	.byte 0/* *  con_int is the real interrupt routine that reads the *  keyboard scan-code and converts it into the appropriate *  ascii character(s). */_keyboard_interrupt:	pushl %eax	pushl %ebx	pushl %ecx	pushl %edx	push %ds	push %es	movl $0x10,%eax	mov %ax,%ds	mov %ax,%es	xorl %al,%al		/* %eax is scan code */	inb $0x60,%al	cmpb $0xe0,%al	je set_e0	cmpb $0xe1,%al	je set_e1	call key_table(,%eax,4)	movb $0,e0e0_e1:	inb $0x61,%al	jmp 1f1:	jmp 1f1:	orb $0x80,%al	jmp 1f1:	jmp 1f1:	outb %al,$0x61	jmp 1f1:	jmp 1f1:	andb $0x7F,%al	outb %al,$0x61	movb $0x20,%al	outb %al,$0x20	pushl $0	call _do_tty_interrupt	addl $4,%esp	pop %es	pop %ds	popl %edx	popl %ecx	popl %ebx	popl %eax	iretset_e0:	movb $1,e0	jmp e0_e1set_e1:	movb $2,e0	jmp e0_e1/* * This routine fills the buffer with max 8 bytes, taken from * %ebx:%eax. (%edx is high). The bytes are written in the * order %al,%ah,%eal,%eah,%bl,%bh ... until %eax is zero. */put_queue:	pushl %ecx	pushl %edx	movl _table_list,%edx		# read-queue for console	movl head(%edx),%ecx1:	movb %al,buf(%edx,%ecx)	incl %ecx	andl $size-1,%ecx	cmpl tail(%edx),%ecx		# buffer full - discard everything	je 3f	shrdl $8,%ebx,%eax	je 2f	shrl $8,%ebx	jmp 1b2:	movl %ecx,head(%edx)	movl proc_list(%edx),%ecx	testl %ecx,%ecx	je 3f	movl $0,(%ecx)3:	popl %edx	popl %ecx	retctrl:	movb $0x04,%al	jmp 1falt:	movb $0x10,%al1:	cmpb $0,e0	je 2f	addb %al,%al2:	orb %al,mode	retunctrl:	movb $0x04,%al	jmp 1funalt:	movb $0x10,%al1:	cmpb $0,e0	je 2f	addb %al,%al2:	notb %al	andb %al,mode	retlshift:	orb $0x01,mode	retunlshift:	andb $0xfe,mode	retrshift:	orb $0x02,mode	retunrshift:	andb $0xfd,mode	retcaps:	testb $0x80,mode	jne 1f	xorb $4,leds	xorb $0x40,mode	orb $0x80,modeset_leds:	call kb_wait	movb $0xed,%al		/* set leds command */	outb %al,$0x60	call kb_wait	movb leds,%al	outb %al,$0x60	retuncaps:	andb $0x7f,mode	retscroll:	xorb $1,leds	jmp set_ledsnum:	xorb $2,leds	jmp set_leds/* *  curosr-key/numeric keypad cursor keys are handled here. *  checking for numeric keypad etc. */cursor:	subb $0x47,%al	jb 1f	cmpb $12,%al	ja 1f	jne cur2		/* check for ctrl-alt-del */	testb $0x0c,mode	je cur2	testb $0x30,mode	jne rebootcur2:	cmpb $0x01,e0		/* e0 forces cursor movement */	je cur	testb $0x02,leds	/* not num-lock forces cursor */	je cur	testb $0x03,mode	/* shift forces cursor */	jne cur	xorl %ebx,%ebx	movb num_table(%eax),%al	jmp put_queue1:	retcur:	movb cur_table(%eax),%al	cmpb $'9,%al	ja ok_cur	movb $'~,%ahok_cur:	shll $16,%eax	movw $0x5b1b,%ax	xorl %ebx,%ebx	jmp put_queuenum_table:	.ascii "789 456 1230,"cur_table:	.ascii "HA5 DGC YB623"/* * this routine handles function keys */func:	pushl %eax	pushl %ecx	pushl %edx	call _show_stat	popl %edx	popl %ecx	popl %eax	subb $0x3B,%al	jb end_func	cmpb $9,%al	jbe ok_func	subb $18,%al	cmpb $10,%al	jb end_func	cmpb $11,%al	ja end_funcok_func:	cmpl $4,%ecx		/* check that there is enough room */	jl end_func	movl func_table(,%eax,4),%eax	xorl %ebx,%ebx	jmp put_queueend_func:	ret/* * function keys send F1:'esc [ [ A' F2:'esc [ [ B' etc. */func_table:	.long 0x415b5b1b,0x425b5b1b,0x435b5b1b,0x445b5b1b	.long 0x455b5b1b,0x465b5b1b,0x475b5b1b,0x485b5b1b	.long 0x495b5b1b,0x4a5b5b1b,0x4b5b5b1b,0x4c5b5b1b#if	defined(KBD_FINNISH)key_map:	.byte 0,27	.ascii "1234567890+'"	.byte 127,9	.ascii "qwertyuiop}"	.byte 0,13,0	.ascii "asdfghjkl|{"	.byte 0,0	.ascii "'zxcvbnm,.-"	.byte 0,'*,0,32		/* 36-39 */	.fill 16,1,0		/* 3A-49 */	.byte '-,0,0,0,'+	/* 4A-4E */	.byte 0,0,0,0,0,0,0	/* 4F-55 */	.byte '<	.fill 10,1,0shift_map:	.byte 0,27	.ascii "!\"#$%&/()=?`"	.byte 127,9	.ascii "QWERTYUIOP]^"	.byte 13,0	.ascii "ASDFGHJKL\\["	.byte 0,0	.ascii "*ZXCVBNM;:_"	.byte 0,'*,0,32		/* 36-39 */	.fill 16,1,0		/* 3A-49 */	.byte '-,0,0,0,'+	/* 4A-4E */	.byte 0,0,0,0,0,0,0	/* 4F-55 */	.byte '>	.fill 10,1,0alt_map:	.byte 0,0	.ascii "\0@\0$\0\0{[]}\\\0"	.byte 0,0	.byte 0,0,0,0,0,0,0,0,0,0,0	.byte '~,13,0	.byte 0,0,0,0,0,0,0,0,0,0,0	.byte 0,0	.byte 0,0,0,0,0,0,0,0,0,0,0	.byte 0,0,0,0		/* 36-39 */	.fill 16,1,0		/* 3A-49 */	.byte 0,0,0,0,0		/* 4A-4E */	.byte 0,0,0,0,0,0,0	/* 4F-55 */	.byte '|	.fill 10,1,0#elif defined(KBD_US)key_map:	.byte 0,27	.ascii "1234567890-="	.byte 127,9	.ascii "qwertyuiop[]"	.byte 13,0	.ascii "asdfghjkl;'"	.byte '`,0	.ascii "\\zxcvbnm,./"	.byte 0,'*,0,32		/* 36-39 */	.fill 16,1,0		/* 3A-49 */	.byte '-,0,0,0,'+	/* 4A-4E */	.byte 0,0,0,0,0,0,0	/* 4F-55 */	.byte '<	.fill 10,1,0shift_map:	.byte 0,27	.ascii "!@#$%^&*()_+"	.byte 127,9	.ascii "QWERTYUIOP{}"	.byte 13,0	.ascii "ASDFGHJKL:\""	.byte '~,0	.ascii "|ZXCVBNM<>?"	.byte 0,'*,0,32		/* 36-39 */	.fill 16,1,0		/* 3A-49 */	.byte '-,0,0,0,'+	/* 4A-4E */	.byte 0,0,0,0,0,0,0	/* 4F-55 */	.byte '>	.fill 10,1,0alt_map:	.byte 0,0	.ascii "\0@\0$\0\0{[]}\\\0"	.byte 0,0	.byte 0,0,0,0,0,0,0,0,0,0,0	.byte '~,13,0	.byte 0,0,0,0,0,0,0,0,0,0,0	.byte 0,0	.byte 0,0,0,0,0,0,0,0,0,0,0	.byte 0,0,0,0		/* 36-39 */	.fill 16,1,0		/* 3A-49 */	.byte 0,0,0,0,0		/* 4A-4E */	.byte 0,0,0,0,0,0,0	/* 4F-55 */	.byte '|	.fill 10,1,0#else#error "KBD-type not defined"#endif/* * do_self handles "normal" keys, ie keys that don't change meaning * and which have just one character returns. */do_self:	lea alt_map,%ebx	testb $0x20,mode		/* alt-gr */	jne 1f	lea shift_map,%ebx	testb $0x03,mode	jne 1f	lea key_map,%ebx1:	movb (%ebx,%eax),%al	orb %al,%al	je none	testb $0x4c,mode		/* ctrl or caps */	je 2f	cmpb $'a,%al	jb 2f	cmpb $'},%al	ja 2f	subb $32,%al2:	testb $0x0c,mode		/* ctrl */	je 3f	cmpb $64,%al	jb 3f	cmpb $64+32,%al	jae 3f	subb $64,%al3:	testb $0x10,mode		/* left alt */	je 4f	orb $0x80,%al4:	andl $0xff,%eax	xorl %ebx,%ebx	call put_queuenone:	ret/* * minus has a routine of it's own, as a 'E0h' before * the scan code for minus means that the numeric keypad * slash was pushed. */minus:	cmpb $1,e0	jne do_self	movl $'/,%eax	xorl %ebx,%ebx	jmp put_queue/* * do_space handles ctrl-space as an ASCII NUL.  Old habits die hard. */do_space:	testb $0x04,mode		/* ctrl */	je do_self	movl $0,%al			/* ASCII NUL */	xorl %ebx,%ebx	jmp put_queue/* * This table decides which routine to call when a scan-code has been * gotten. Most routines just call do_self, or none, depending if * they are make or break. */key_table:	.long none,do_self,do_self,do_self	/* 00-03 s0 esc 1 2 */	.long do_self,do_self,do_self,do_self	/* 04-07 3 4 5 6 */	.long do_self,do_self,do_self,do_self	/* 08-0B 7 8 9 0 */	.long do_self,do_self,do_self,do_self	/* 0C-0F + ' bs tab */	.long do_self,do_self,do_self,do_self	/* 10-13 q w e r */	.long do_self,do_self,do_self,do_self	/* 14-17 t y u i */	.long do_self,do_self,do_self,do_self	/* 18-1B o p } ^ */	.long do_self,ctrl,do_self,do_self	/* 1C-1F enter ctrl a s */	.long do_self,do_self,do_self,do_self	/* 20-23 d f g h */	.long do_self,do_self,do_self,do_self	/* 24-27 j k l | */	.long do_self,do_self,lshift,do_self	/* 28-2B { para lshift , */	.long do_self,do_self,do_self,do_self	/* 2C-2F z x c v */	.long do_self,do_self,do_self,do_self	/* 30-33 b n m , */	.long do_self,minus,rshift,do_self	/* 34-37 . - rshift * */	.long alt,do_space,ctrl,func		/* 38-3B alt sp caps f1 */	.long func,func,func,func		/* 3C-3F f2 f3 f4 f5 */	.long func,func,func,func		/* 40-43 f6 f7 f8 f9 */	.long func,num,scroll,cursor		/* 44-47 f10 num scr home */	.long cursor,cursor,do_self,cursor	/* 48-4B up pgup - left */	.long cursor,cursor,do_self,cursor	/* 4C-4F n5 right + end */	.long cursor,cursor,cursor,cursor	/* 50-53 dn pgdn ins del */	.long none,none,do_self,func		/* 54-57 sysreq ? < f11 */	.long func,none,none,none		/* 58-5B f12 ? ? ? */	.long none,none,none,none		/* 5C-5F ? ? ? ? */	.long none,none,none,none		/* 60-63 ? ? ? ? */	.long none,none,none,none		/* 64-67 ? ? ? ? */	.long none,none,none,none		/* 68-6B ? ? ? ? */	.long none,none,none,none		/* 6C-6F ? ? ? ? */	.long none,none,none,none		/* 70-73 ? ? ? ? */	.long none,none,none,none		/* 74-77 ? ? ? ? */	.long none,none,none,none		/* 78-7B ? ? ? ? */	.long none,none,none,none		/* 7C-7F ? ? ? ? */	.long none,none,none,none		/* 80-83 ? br br br */	.long none,none,none,none		/* 84-87 br br br br */	.long none,none,none,none		/* 88-8B br br br br */	.long none,none,none,none		/* 8C-8F br br br br */	.long none,none,none,none		/* 90-93 br br br br */	.long none,none,none,none		/* 94-97 br br br br */	.long none,none,none,none		/* 98-9B br br br br */	.long none,unctrl,none,none		/* 9C-9F br unctrl br br */	.long none,none,none,none		/* A0-A3 br br br br */	.long none,none,none,none		/* A4-A7 br br br br */	.long none,none,unlshift,none		/* A8-AB br br unlshift br */	.long none,none,none,none		/* AC-AF br br br br */	.long none,none,none,none		/* B0-B3 br br br br */	.long none,none,unrshift,none		/* B4-B7 br br unrshift br */	.long unalt,none,unctrl,none		/* B8-BB unalt br uncaps br */	.long none,none,none,none		/* BC-BF br br br br */	.long none,none,none,none		/* C0-C3 br br br br */	.long none,none,none,none		/* C4-C7 br br br br */	.long none,none,none,none		/* C8-CB br br br br */	.long none,none,none,none		/* CC-CF br br br br */	.long none,none,none,none		/* D0-D3 br br br br */	.long none,none,none,none		/* D4-D7 br br br br */	.long none,none,none,none		/* D8-DB br ? ? ? */	.long none,none,none,none		/* DC-DF ? ? ? ? */	.long none,none,none,none		/* E0-E3 e0 e1 ? ? */	.long none,none,none,none		/* E4-E7 ? ? ? ? */	.long none,none,none,none		/* E8-EB ? ? ? ? */	.long none,none,none,none		/* EC-EF ? ? ? ? */	.long none,none,none,none		/* F0-F3 ? ? ? ? */	.long none,none,none,none		/* F4-F7 ? ? ? ? */	.long none,none,none,none		/* F8-FB ? ? ? ? */	.long none,none,none,none		/* FC-FF ? ? ? ? *//* * kb_wait waits for the keyboard controller buffer to empty. * there is no timeout - if the buffer doesn't empty, we hang. */kb_wait:	pushl %eax1:	inb $0x64,%al	testb $0x02,%al	jne 1b	popl %eax	ret/* * This routine reboots the machine by asking the keyboard * controller to pulse the reset-line low. */reboot:	call kb_wait	movw $0x1234,0x472	/* don't do memory check */	movb $0xfc,%al		/* pulse reset and A20 low */	outb %al,$0x64die:	jmp die

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美高清视频不卡网| 国产91精品精华液一区二区三区| 在线观看国产日韩| 亚洲第一成人在线| 91麻豆精品国产91久久久久 | 亚洲va天堂va国产va久| 在线观看不卡视频| 麻豆中文一区二区| 国产午夜精品福利| 色婷婷综合久久| 日本欧美肥老太交大片| 欧美xxxxxxxxx| 成人av在线资源| 亚洲一二三四在线| 欧美电影免费观看高清完整版在线 | 国产午夜精品美女毛片视频| 欧美三级视频在线| 奇米影视在线99精品| 国产亚洲精品福利| 在线观看视频91| 国产在线国偷精品产拍免费yy| 国产精品久久久久久久久免费相片 | 制服丝袜亚洲播放| 国产尤物一区二区在线| 亚洲欧美激情插| 日韩欧美国产精品| av中文字幕一区| 午夜精品免费在线观看| 久久精品男人的天堂| 欧美亚洲愉拍一区二区| 精品在线免费观看| 亚洲免费av高清| 2023国产精华国产精品| 精品视频一区三区九区| 国产成人无遮挡在线视频| 亚洲国产精品综合小说图片区| 精品久久99ma| 91成人看片片| 国产成人亚洲综合a∨婷婷图片 | 日韩精品在线网站| 91片在线免费观看| 黄一区二区三区| 五月天精品一区二区三区| 国产精品毛片久久久久久| 日韩一区二区三区免费观看| 91小视频免费观看| 欧美精品一二三四| 不卡在线观看av| 精品一区二区三区香蕉蜜桃 | 欧美日韩国产天堂| 成人性生交大片免费看中文 | 国产成人啪免费观看软件| 婷婷六月综合网| 亚洲素人一区二区| 国产亚洲福利社区一区| 欧美一区二区三区小说| 欧美日韩日日夜夜| 一本大道久久a久久综合| 成人综合婷婷国产精品久久| 看片的网站亚洲| 日韩国产精品久久| 亚洲福利一二三区| 一区二区免费在线播放| 中文字幕欧美一| 国产精品少妇自拍| 国产精品日产欧美久久久久| 久久免费精品国产久精品久久久久| 制服丝袜一区二区三区| 欧美高清www午色夜在线视频| 欧美影片第一页| 欧美视频第二页| 欧美日韩欧美一区二区| 在线一区二区三区| 欧美色图片你懂的| 欧美天堂亚洲电影院在线播放| 91麻豆国产自产在线观看| av影院午夜一区| 精品国产区一区| 日韩女优毛片在线| 精品久久久久久久久久久院品网 | 午夜电影久久久| 五月天国产精品| 三级欧美韩日大片在线看| 亚洲h动漫在线| 天天色图综合网| 蜜桃视频一区二区| 国产一区二区三区香蕉 | 《视频一区视频二区| 亚洲欧美日韩中文字幕一区二区三区 | 精品福利在线导航| 欧美精品一区男女天堂| 久久免费午夜影院| 中文字幕一区二区三区在线播放 | 亚洲成人av中文| 日韩和欧美的一区| 久久99精品国产麻豆婷婷| 韩日欧美一区二区三区| 成人午夜私人影院| 在线观看日韩国产| 91精品婷婷国产综合久久竹菊| 欧美成人video| 亚洲国产精品高清| 夜夜揉揉日日人人青青一国产精品 | 一区二区三区四区在线| 三级成人在线视频| 国产乱国产乱300精品| 2023国产精华国产精品| **性色生活片久久毛片| 视频一区二区三区中文字幕| 国产一区二区剧情av在线| 不卡的av网站| 欧美日韩国产一级| 国产午夜精品一区二区| 亚洲国产中文字幕| 国产精品综合一区二区| 91精品福利视频| 精品入口麻豆88视频| 中文字幕一区二区三区四区不卡 | 国产综合色精品一区二区三区| 丰满白嫩尤物一区二区| 欧美图片一区二区三区| 久久久精品免费网站| 亚洲午夜久久久久久久久久久| 韩国视频一区二区| 欧美中文字幕不卡| 国产日产欧美一区| 日日夜夜免费精品视频| 不卡免费追剧大全电视剧网站| 69久久99精品久久久久婷婷 | 国产精一品亚洲二区在线视频| 在线欧美日韩国产| 久久精品无码一区二区三区| 亚洲午夜久久久久久久久电影院| 高清视频一区二区| 日韩免费一区二区三区在线播放| 亚洲精品欧美综合四区| 国产毛片精品一区| 91麻豆精品国产91久久久久久| 亚洲欧美日韩电影| 国产+成+人+亚洲欧洲自线| 日韩欧美国产麻豆| 性久久久久久久久久久久| 99久久精品一区二区| 久久亚洲二区三区| 九九九久久久精品| 欧美一区二区三区四区五区| 亚洲精品视频在线观看免费| 成人18精品视频| 精品亚洲国产成人av制服丝袜 | 美女网站色91| 日本丶国产丶欧美色综合| 中文一区在线播放| 国产乱码精品一区二区三区忘忧草 | 中文字幕日韩精品一区| 国产精品自拍av| 久久综合九色综合欧美就去吻| 天堂一区二区在线| 欧美日韩国产一级片| 亚洲一区二区三区四区五区黄| 99久久99久久精品免费观看| 国产欧美精品日韩区二区麻豆天美| 久久69国产一区二区蜜臀| 日韩一区二区三区四区五区六区| 亚洲图片欧美一区| 欧美日韩一区三区| 天天色天天操综合| 欧美一区二区三区视频在线| 日本女优在线视频一区二区| 欧美一区二区日韩| 久久国产精品色婷婷| 精品日韩在线一区| 国产精华液一区二区三区| 国产亚洲人成网站| 成人午夜电影小说| 中文字幕一区二区不卡| 91麻豆免费看片| 亚洲一区中文在线| 欧美人与性动xxxx| 精品中文av资源站在线观看| 久久久久久**毛片大全| 国产夫妻精品视频| 国产精品第一页第二页第三页 | 日韩码欧中文字| 91天堂素人约啪| 亚洲午夜久久久久久久久久久| 4438亚洲最大| 久久99精品一区二区三区三区| 久久综合av免费| 91视频在线观看免费| 午夜亚洲国产au精品一区二区| 日韩一级片在线播放| 国产精一区二区三区| 亚洲日韩欧美一区二区在线| 欧美视频在线不卡| 激情综合亚洲精品| 中文字幕一区av| 日韩午夜在线影院| 成人免费电影视频| 亚洲综合激情另类小说区| 日韩欧美一区二区久久婷婷|