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

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

?? tty.c

?? 《自己動手寫操作系統》的隨書附贈光盤
?? C
字號:

/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
                               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)


/* 本文件內函數聲明 */
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--;

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


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品国产一区二区精华液| 亚洲在线视频免费观看| 7777精品伊人久久久大香线蕉 | 国产成人免费高清| 久久国产精品无码网站| 日韩电影免费在线看| 日韩高清欧美激情| 激情图片小说一区| 激情久久五月天| 国产成人在线免费| 99国产精品一区| 欧美午夜一区二区三区| 欧美顶级少妇做爰| 精品国产乱码久久久久久影片| 精品精品国产高清a毛片牛牛| 久久久综合网站| 亚洲人成亚洲人成在线观看图片| 夜夜揉揉日日人人青青一国产精品| 午夜视频一区二区三区| 狠狠色综合播放一区二区| 成人免费的视频| 宅男在线国产精品| 国产精品天美传媒沈樵| 亚洲人成伊人成综合网小说| 一区二区欧美精品| 久草热8精品视频在线观看| 国产成人综合网| 欧美日韩激情一区二区三区| 久久久精品中文字幕麻豆发布| 亚洲欧美日韩久久| 免费成人深夜小野草| av中文字幕在线不卡| 在线日韩av片| 国产视频一区在线播放| 一区二区在线观看免费| 久久99国产精品成人| 色域天天综合网| 26uuu国产电影一区二区| 亚洲在线视频一区| 福利电影一区二区| 欧美精品日日鲁夜夜添| 国产精品每日更新在线播放网址| 亚洲电影视频在线| 成人国产免费视频| 欧美大片在线观看| 亚洲午夜精品一区二区三区他趣| 国产精品自拍三区| 欧美一区二区三区免费在线看| 国产精品免费看片| 韩国av一区二区| 91.麻豆视频| 亚洲一区二区美女| 99国产精品久久久| 欧美激情资源网| 国产一区二区福利| 欧美一区二区福利视频| 亚洲观看高清完整版在线观看 | 北条麻妃一区二区三区| 日韩午夜激情电影| 午夜私人影院久久久久| 欧美性受极品xxxx喷水| 亚洲国产精品成人综合色在线婷婷| 麻豆精品一区二区综合av| 在线不卡欧美精品一区二区三区| 亚洲精品国产无套在线观| 不卡av在线网| 欧美激情一区不卡| 国产.欧美.日韩| 日本一区二区动态图| 国产.精品.日韩.另类.中文.在线.播放| 精品久久久久久久久久久久久久久 | 久久精品男人天堂av| 免费观看91视频大全| 91精品欧美久久久久久动漫| 亚洲成人一区在线| 欧美日韩视频在线观看一区二区三区 | 2023国产精华国产精品| 九色|91porny| 国产欧美1区2区3区| 懂色av一区二区夜夜嗨| 《视频一区视频二区| 91在线码无精品| 亚洲国产日韩一级| 欧美一区二区精品| 国产乱人伦偷精品视频不卡| 精品久久久久久久人人人人传媒| 韩国理伦片一区二区三区在线播放| 日韩欧美一区在线| 国产suv精品一区二区6| 国产精品国产精品国产专区不片| 91在线看国产| 五月婷婷综合激情| 久久嫩草精品久久久精品一| 国产成人在线观看| 一区二区三区四区av| 日韩一区二区视频在线观看| 国产伦理精品不卡| 国产精品女同一区二区三区| 欧美日韩一区二区在线观看 | 亚洲美腿欧美偷拍| 欧美嫩在线观看| 久久99最新地址| 中文字幕第一区二区| 欧美日韩中文字幕精品| 韩国三级中文字幕hd久久精品| 中日韩av电影| 91精品国产手机| av成人免费在线观看| 日日摸夜夜添夜夜添国产精品| 欧美tickle裸体挠脚心vk| 91丨porny丨中文| 免费成人在线网站| 日韩伦理免费电影| 91精品国产高清一区二区三区 | 午夜婷婷国产麻豆精品| 欧美国产97人人爽人人喊| 欧美电影在哪看比较好| 成人av在线播放网站| 日韩电影在线观看电影| 国产精品国模大尺度视频| 欧美大片一区二区| 欧美午夜精品一区| 成人毛片老司机大片| 蜜桃精品在线观看| 亚洲成人www| 亚洲自拍欧美精品| 国产精品久久毛片a| 欧美一区二区女人| 欧美人与性动xxxx| 91美女在线观看| 成人三级伦理片| 黑人巨大精品欧美黑白配亚洲| 亚洲mv在线观看| 亚洲综合丝袜美腿| 亚洲精品水蜜桃| 亚洲天堂成人网| 日韩一区中文字幕| 日韩美女精品在线| 国产精品美女www爽爽爽| 久久久久久久综合| 国产日产精品一区| 久久久久一区二区三区四区| 精品国产免费一区二区三区四区 | 国产精品美女久久久久久| 久久亚洲一区二区三区明星换脸| 欧美精品日韩一区| 91精品中文字幕一区二区三区| 欧美日韩一区二区三区不卡| 日本久久电影网| 欧美色图片你懂的| 欧美日韩国产综合久久| 欧美亚洲高清一区| 欧美日韩中文一区| 91精品国产一区二区三区香蕉 | 成熟亚洲日本毛茸茸凸凹| 成人性生交大片| 99久久精品情趣| 色狠狠色噜噜噜综合网| 欧美三级三级三级爽爽爽| 欧美日韩国产免费一区二区| 91精品国产手机| 久久婷婷成人综合色| 亚洲国产经典视频| 伊人夜夜躁av伊人久久| 日韩国产欧美三级| 国产乱码精品一品二品| www.爱久久.com| 在线观看91精品国产入口| 欧美精品免费视频| 久久久一区二区三区| 中文字幕一区二区三区蜜月| 亚洲成a人片在线观看中文| 裸体健美xxxx欧美裸体表演| 国产白丝精品91爽爽久久| 91在线视频播放| 日韩欧美一区二区不卡| 国产女主播在线一区二区| 亚洲国产另类精品专区| 极品少妇xxxx精品少妇| 色综合久久综合网97色综合| 这里只有精品电影| 国产精品视频看| 亚洲国产精品久久一线不卡| 极品少妇一区二区三区精品视频| av电影在线观看一区| 91麻豆精品国产91| 国产精品热久久久久夜色精品三区 | 亚洲一区二区视频在线观看| 麻豆成人在线观看| 91丝袜美女网| 亚洲精品一区二区精华| 亚洲人亚洲人成电影网站色| 久久精品国产一区二区三| 91尤物视频在线观看| 欧美成人乱码一区二区三区| 亚洲欧美二区三区| 国产寡妇亲子伦一区二区| 欧美日本乱大交xxxxx| 国产精品动漫网站| 国产在线观看免费一区|