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

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

?? tty.c

?? 自己動(dòng)手寫操作 系統(tǒng) 的源 代 碼 這里有完整的源代碼
?? C
字號(hào):

/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
                               tty.c
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
                                                    Forrest Yu, 2005
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/

#include "type.h"
#include "const.h"
#include "protect.h"
#include "string.h"
#include "proc.h"
#include "tty.h"
#include "console.h"
#include "global.h"
#include "keyboard.h"
#include "proto.h"


#define TTY_FIRST	(tty_table)
#define TTY_END		(tty_table + NR_CONSOLES)


/* 本文件內(nèi)函數(shù)聲明 */
PRIVATE void	init_tty(TTY* p_tty);
PRIVATE void	tty_do_read(TTY* p_tty);
PRIVATE void	tty_do_write(TTY* p_tty);
PRIVATE void	put_key(TTY* p_tty, t_32 key);


/*======================================================================*
                           task_tty
 *======================================================================*/
PUBLIC void task_tty()
{
	TTY*	p_tty;

	init_keyboard();

	for (p_tty=TTY_FIRST;p_tty<TTY_END;p_tty++) {
		init_tty(p_tty);
	}

	select_console(0);

	while (1) {
		for (p_tty=TTY_FIRST;p_tty<TTY_END;p_tty++) {
			tty_do_read(p_tty);
			tty_do_write(p_tty);
		}
	}
}


/*======================================================================*
                           init_tty
 *======================================================================*/
PRIVATE void init_tty(TTY* p_tty)
{
	p_tty->inbuf_count = 0;
	p_tty->p_inbuf_head = p_tty->p_inbuf_tail = p_tty->in_buf;

	init_screen(p_tty);
}


/*======================================================================*
                           in_process
 *======================================================================*/
PUBLIC void in_process(TTY* p_tty, t_32 key)
{
	if (!(key & FLAG_EXT)) {
		put_key(p_tty, key);
	}
	else {
		int raw_code = key & MASK_RAW;
		switch(raw_code) {
		case ENTER:
			put_key(p_tty, '\n');
			break;
		case BACKSPACE:
			put_key(p_tty, '\b');
			break;
		case UP:
			if ((key & FLAG_SHIFT_L) || (key & FLAG_SHIFT_R)) {	/* Shift + Up */
				scroll_screen(p_tty->p_console, SCROLL_SCREEN_UP);
			}
			break;
		case DOWN:
			if ((key & FLAG_SHIFT_L) || (key & FLAG_SHIFT_R)) {	/* Shift + Down */
				scroll_screen(p_tty->p_console, SCROLL_SCREEN_DOWN);
			}
			break;
		case F1:
		case F2:
		case F3:
		case F4:
		case F5:
		case F6:
		case F7:
		case F8:
		case F9:
		case F10:
		case F11:
		case F12:
			if ((key & FLAG_ALT_L) || (key & FLAG_ALT_R)) {	/* Alt + F1~F12 */
				select_console(raw_code - F1);
			}
			break;
		default:
			break;
		}
	}
}


/*======================================================================*
                              put_key
*======================================================================*/
PRIVATE void put_key(TTY* p_tty, t_32 key)
{
	if (p_tty->inbuf_count < TTY_IN_BYTES) {
		*(p_tty->p_inbuf_head) = key;
		p_tty->p_inbuf_head++;
		if (p_tty->p_inbuf_head == p_tty->in_buf + TTY_IN_BYTES) {
			p_tty->p_inbuf_head = p_tty->in_buf;
		}
		p_tty->inbuf_count++;
	}
}


/*======================================================================*
                              tty_do_read
*======================================================================*/
PRIVATE void tty_do_read(TTY* p_tty)
{
	if (is_current_console(p_tty->p_console)) {
		keyboard_read(p_tty);
	}
}


/*======================================================================*
                              tty_do_write
*======================================================================*/
PRIVATE void tty_do_write(TTY* p_tty)
{
	if (p_tty->inbuf_count) {
		char ch = *(p_tty->p_inbuf_tail);
		p_tty->p_inbuf_tail++;
		if (p_tty->p_inbuf_tail == p_tty->in_buf + TTY_IN_BYTES) {
			p_tty->p_inbuf_tail = p_tty->in_buf;
		}
		p_tty->inbuf_count--;

		//disp_int(ch);
		out_char(p_tty->p_console, ch);
	}
}


/*======================================================================*
                              tty_write
*======================================================================*/
PUBLIC void tty_write(TTY* p_tty, char* buf, int len)
{
	char* p = buf;
	int i = len;

	while (i) {
		out_char(p_tty->p_console, *p++);
		i--;
	}
}


/*======================================================================*
                              sys_write
*======================================================================*/
PUBLIC int sys_write(char* buf, int len, PROCESS* p_proc)
{
	tty_write(&tty_table[p_proc->nr_tty], buf, len);
	return 0;
}


?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
av男人天堂一区| 懂色av一区二区三区蜜臀| 欧洲亚洲精品在线| 亚洲日本va在线观看| 99久久99久久精品免费看蜜桃| 国产精品狼人久久影院观看方式| 成人免费av资源| 综合色天天鬼久久鬼色| 91极品美女在线| 日韩国产欧美在线播放| 26uuu亚洲综合色| 成人午夜视频在线观看| 一区二区三区国产精品| 欧美日韩综合不卡| 免费一级片91| 国产欧美日韩精品一区| 在线一区二区三区四区五区| 日本成人在线电影网| 久久青草国产手机看片福利盒子 | 17c精品麻豆一区二区免费| 色婷婷av一区二区三区gif| 五月天激情综合| 日本一区二区成人在线| 欧美亚洲自拍偷拍| 国内不卡的二区三区中文字幕| 国产精品美女久久久久aⅴ| 欧美日韩夫妻久久| 国产电影一区二区三区| 亚洲午夜久久久久中文字幕久| 亚洲精品一区二区在线观看| 成人精品视频.| 亚洲激情中文1区| 欧美精品一区二区高清在线观看| 成人午夜免费电影| 亚洲综合无码一区二区| 日韩免费高清av| 成人自拍视频在线观看| 亚洲最新在线观看| 日韩三级视频在线看| 国产酒店精品激情| 亚洲一区二区欧美日韩| 久久综合久久综合久久| 色综合色狠狠综合色| 蜜桃久久av一区| 国产精品欧美一区喷水| 91精品视频网| 99re8在线精品视频免费播放| 午夜欧美一区二区三区在线播放| 久久久国际精品| 欧美日韩中文一区| 国产精品一区二区不卡| 亚洲国产视频直播| 国产婷婷色一区二区三区四区| 欧美性受极品xxxx喷水| 国产精品一区二区91| 亚洲r级在线视频| 日韩欧美一级精品久久| 99久久99久久久精品齐齐| 美女视频免费一区| 亚洲欧美福利一区二区| 久久久久久电影| 欧美日韩国产天堂| 91亚洲精华国产精华精华液| 欧美a一区二区| 一区二区三区四区不卡视频| 国产婷婷色一区二区三区四区| 欧美乱妇15p| 91久久精品网| 成人小视频在线观看| 日本亚洲视频在线| 亚洲免费资源在线播放| 日韩视频国产视频| 欧美精品亚洲一区二区在线播放| 99v久久综合狠狠综合久久| 国产成人午夜片在线观看高清观看| 日本中文字幕一区| 亚洲国产色一区| 悠悠色在线精品| 中文字幕在线一区| 久久久久国产免费免费| 欧美va天堂va视频va在线| 欧美高清视频一二三区 | 成人精品小蝌蚪| 国产一区999| 国产一区二区三区免费| 蜜臀久久99精品久久久久宅男| 午夜私人影院久久久久| 亚洲一二三区视频在线观看| 国产日韩欧美精品电影三级在线| 色婷婷av一区| 欧美日韩国产一二三| 欧美视频在线一区二区三区 | www.日韩大片| av动漫一区二区| 99久久久久久99| av在线播放不卡| 成人黄色a**站在线观看| 丁香啪啪综合成人亚洲小说| 福利一区二区在线| 国产成人精品1024| 99国产精品国产精品久久| 97国产一区二区| 欧美午夜电影在线播放| 91精品国产综合久久久久久漫画| 欧美一二三在线| 久久亚洲精品国产精品紫薇| 欧美国产一区二区| 亚洲婷婷在线视频| 一区二区三区在线高清| 亚洲国产精品一区二区尤物区| 亚洲男女毛片无遮挡| 最近日韩中文字幕| 国产欧美精品一区二区色综合| 国产亚洲va综合人人澡精品| 国产精品第四页| 亚洲午夜视频在线| 久久国产人妖系列| 不卡视频一二三四| 欧美日韩国产色站一区二区三区| 91精品婷婷国产综合久久| 日韩欧美高清在线| 国产精品国产三级国产普通话三级 | 国产欧美日韩另类视频免费观看| 国产精品热久久久久夜色精品三区 | 欧美一区永久视频免费观看| 欧美日韩1234| 国产三级精品三级在线专区| 一区二区三区成人| 久久不见久久见中文字幕免费| 国产精品伊人色| 欧美在线你懂的| 久久久久久毛片| 五月综合激情日本mⅴ| 国产精品综合二区| 色狠狠综合天天综合综合| 欧美图区在线视频| 日韩一区二区三区四区五区六区| 亚洲天堂成人网| 九九**精品视频免费播放| 成人免费毛片高清视频| 69久久99精品久久久久婷婷| 亚洲欧洲一区二区在线播放| 蜜臀久久99精品久久久画质超高清| 成人午夜激情在线| 欧美一区在线视频| 亚洲一区二区三区精品在线| 国产电影一区二区三区| 91精品国产一区二区三区香蕉 | 欧美精品乱人伦久久久久久| 国产精品视频免费| 男人的天堂亚洲一区| 国产成人小视频| 精品少妇一区二区三区在线视频| 亚洲一区二区三区四区在线| 成人永久看片免费视频天堂| 26uuu色噜噜精品一区| 亚洲精品乱码久久久久久| 国产成+人+日韩+欧美+亚洲| 欧美一区二区在线视频| 亚洲一区二区欧美激情| 97久久超碰精品国产| 久久久国际精品| 久久99久久久久| 精品视频在线免费观看| 亚洲欧美二区三区| 91免费观看国产| 中文字幕不卡在线| 国产麻豆精品一区二区| 91精品国产色综合久久不卡蜜臀| 亚洲美女视频一区| 99视频有精品| 亚洲欧洲三级电影| 成人亚洲一区二区一| 国产午夜亚洲精品午夜鲁丝片| 久久精品国产77777蜜臀| 欧美日韩亚洲高清一区二区| 亚洲综合成人在线视频| 色综合久久久久综合体| 亚洲免费资源在线播放| 色综合天天在线| 中文字幕一区二区不卡| 国产91丝袜在线观看| 久久久精品综合| 粉嫩av一区二区三区粉嫩| 欧美国产视频在线| 成人三级在线视频| 中文字幕av一区二区三区免费看| 丁香婷婷综合网| 国产日韩视频一区二区三区| 国产成人aaa| 国产精品你懂的| jizz一区二区| 午夜精品久久久久久久蜜桃app| 欧美精品视频www在线观看| 秋霞影院一区二区| ww亚洲ww在线观看国产| 国产一区二区主播在线| 国产欧美视频在线观看| www.欧美日韩| 亚洲午夜影视影院在线观看|