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

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

?? console.c

?? Minix3.11的源碼。[MINIX 3是一個為高可靠性應(yīng)用而設(shè)計的自由且簡潔的類UNIX系統(tǒng)。]
?? C
?? 第 1 頁 / 共 3 頁
字號:
  if (cons->c_column > scr_width) cons->c_column = scr_width;  if (cons->c_row < 0) cons->c_row = 0;  if (cons->c_row >= scr_lines) cons->c_row = scr_lines - 1;  cur = cons->c_org + cons->c_row * scr_width + cons->c_column;  if (cur != cons->c_cur) {	if (cons == curcons) set_6845(CURSOR, cur);	cons->c_cur = cur;  }}/*===========================================================================* *				parse_escape				     * *===========================================================================*/PRIVATE void parse_escape(cons, c)register console_t *cons;	/* pointer to console struct */char c;				/* next character in escape sequence */{/* The following ANSI escape sequences are currently supported. * If n and/or m are omitted, they default to 1. *   ESC [nA moves up n lines *   ESC [nB moves down n lines *   ESC [nC moves right n spaces *   ESC [nD moves left n spaces *   ESC [m;nH" moves cursor to (m,n) *   ESC [J clears screen from cursor *   ESC [K clears line from cursor *   ESC [nL inserts n lines ar cursor *   ESC [nM deletes n lines at cursor *   ESC [nP deletes n chars at cursor *   ESC [n@ inserts n chars at cursor *   ESC [nm enables rendition n (0=normal, 4=bold, 5=blinking, 7=reverse) *   ESC M scrolls the screen backwards if the cursor is on the top line */  switch (cons->c_esc_state) {    case 1:			/* ESC seen */	cons->c_esc_intro = '\0';	cons->c_esc_parmp = bufend(cons->c_esc_parmv);	do {		*--cons->c_esc_parmp = 0;	} while (cons->c_esc_parmp > cons->c_esc_parmv);	switch (c) {	    case '[':	/* Control Sequence Introducer */		cons->c_esc_intro = c;		cons->c_esc_state = 2;		break;	    case 'M':	/* Reverse Index */		do_escape(cons, c);		break;	    default:		cons->c_esc_state = 0;	}	break;    case 2:			/* ESC [ seen */	if (c >= '0' && c <= '9') {		if (cons->c_esc_parmp < bufend(cons->c_esc_parmv))			*cons->c_esc_parmp = *cons->c_esc_parmp * 10 + (c-'0');	} else	if (c == ';') {		if (cons->c_esc_parmp < bufend(cons->c_esc_parmv))			cons->c_esc_parmp++;	} else {		do_escape(cons, c);	}	break;  }}/*===========================================================================* *				do_escape				     * *===========================================================================*/PRIVATE void do_escape(cons, c)register console_t *cons;	/* pointer to console struct */char c;				/* next character in escape sequence */{  int value, n;  unsigned src, dst, count;  int *parmp;  /* Some of these things hack on screen RAM, so it had better be up to date */  flush(cons);  if (cons->c_esc_intro == '\0') {	/* Handle a sequence beginning with just ESC */	switch (c) {	    case 'M':		/* Reverse Index */		if (cons->c_row == 0) {			scroll_screen(cons, SCROLL_DOWN);		} else {			cons->c_row--;		}		flush(cons);		break;	    default: break;	}  } else  if (cons->c_esc_intro == '[') {	/* Handle a sequence beginning with ESC [ and parameters */	value = cons->c_esc_parmv[0];	switch (c) {	    case 'A':		/* ESC [nA moves up n lines */		n = (value == 0 ? 1 : value);		cons->c_row -= n;		flush(cons);		break;	    case 'B':		/* ESC [nB moves down n lines */		n = (value == 0 ? 1 : value);		cons->c_row += n;		flush(cons);		break;	    case 'C':		/* ESC [nC moves right n spaces */		n = (value == 0 ? 1 : value);		cons->c_column += n;		flush(cons);		break;	    case 'D':		/* ESC [nD moves left n spaces */		n = (value == 0 ? 1 : value);		cons->c_column -= n;		flush(cons);		break;	    case 'H':		/* ESC [m;nH" moves cursor to (m,n) */		cons->c_row = cons->c_esc_parmv[0] - 1;		cons->c_column = cons->c_esc_parmv[1] - 1;		flush(cons);		break;	    case 'J':		/* ESC [sJ clears in display */		switch (value) {		    case 0:	/* Clear from cursor to end of screen */			count = scr_size - (cons->c_cur - cons->c_org);			dst = cons->c_cur;			break;		    case 1:	/* Clear from start of screen to cursor */			count = cons->c_cur - cons->c_org;			dst = cons->c_org;			break;		    case 2:	/* Clear entire screen */			count = scr_size;			dst = cons->c_org;			break;		    default:	/* Do nothing */			count = 0;			dst = cons->c_org;		}		blank_color = cons->c_blank;		mem_vid_copy(BLANK_MEM, dst, count);		break;	    case 'K':		/* ESC [sK clears line from cursor */		switch (value) {		    case 0:	/* Clear from cursor to end of line */			count = scr_width - cons->c_column;			dst = cons->c_cur;			break;		    case 1:	/* Clear from beginning of line to cursor */			count = cons->c_column;			dst = cons->c_cur - cons->c_column;			break;		    case 2:	/* Clear entire line */			count = scr_width;			dst = cons->c_cur - cons->c_column;			break;		    default:	/* Do nothing */			count = 0;			dst = cons->c_cur;		}		blank_color = cons->c_blank;		mem_vid_copy(BLANK_MEM, dst, count);		break;	    case 'L':		/* ESC [nL inserts n lines at cursor */		n = value;		if (n < 1) n = 1;		if (n > (scr_lines - cons->c_row))			n = scr_lines - cons->c_row;		src = cons->c_org + cons->c_row * scr_width;		dst = src + n * scr_width;		count = (scr_lines - cons->c_row - n) * scr_width;		vid_vid_copy(src, dst, count);		blank_color = cons->c_blank;		mem_vid_copy(BLANK_MEM, src, n * scr_width);		break;	    case 'M':		/* ESC [nM deletes n lines at cursor */		n = value;		if (n < 1) n = 1;		if (n > (scr_lines - cons->c_row))			n = scr_lines - cons->c_row;		dst = cons->c_org + cons->c_row * scr_width;		src = dst + n * scr_width;		count = (scr_lines - cons->c_row - n) * scr_width;		vid_vid_copy(src, dst, count);		blank_color = cons->c_blank;		mem_vid_copy(BLANK_MEM, dst + count, n * scr_width);		break;	    case '@':		/* ESC [n@ inserts n chars at cursor */		n = value;		if (n < 1) n = 1;		if (n > (scr_width - cons->c_column))			n = scr_width - cons->c_column;		src = cons->c_cur;		dst = src + n;		count = scr_width - cons->c_column - n;		vid_vid_copy(src, dst, count);		blank_color = cons->c_blank;		mem_vid_copy(BLANK_MEM, src, n);		break;	    case 'P':		/* ESC [nP deletes n chars at cursor */		n = value;		if (n < 1) n = 1;		if (n > (scr_width - cons->c_column))			n = scr_width - cons->c_column;		dst = cons->c_cur;		src = dst + n;		count = scr_width - cons->c_column - n;		vid_vid_copy(src, dst, count);		blank_color = cons->c_blank;		mem_vid_copy(BLANK_MEM, dst + count, n);		break;	    case 'm':		/* ESC [nm enables rendition n */		for (parmp = cons->c_esc_parmv; parmp <= cons->c_esc_parmp				&& parmp < bufend(cons->c_esc_parmv); parmp++) {			if (cons->c_reverse) {				/* Unswap fg and bg colors */				cons->c_attr =	((cons->c_attr & 0x7000) >> 4) |						((cons->c_attr & 0x0700) << 4) |						((cons->c_attr & 0x8800));			}			switch (n = *parmp) {			    case 0:	/* NORMAL */				cons->c_attr = cons->c_blank = BLANK_COLOR;				cons->c_reverse = FALSE;				break;			    case 1:	/* BOLD  */				/* Set intensity bit */				cons->c_attr |= 0x0800;				break;			    case 4:	/* UNDERLINE */				if (color) {					/* Change white to cyan, i.e. lose red					 */					cons->c_attr = (cons->c_attr & 0xBBFF);				} else {					/* Set underline attribute */					cons->c_attr = (cons->c_attr & 0x99FF);				}				break;			    case 5:	/* BLINKING */				/* Set the blink bit */				cons->c_attr |= 0x8000;				break;			    case 7:	/* REVERSE */				cons->c_reverse = TRUE;				break;			    default:	/* COLOR */				if (n == 39) n = 37;	/* set default color */				if (n == 49) n = 40;				if (!color) {					/* Don't mess up a monochrome screen */				} else				if (30 <= n && n <= 37) {					/* Foreground color */					cons->c_attr =						(cons->c_attr & 0xF8FF) |						(ansi_colors[(n - 30)] << 8);					cons->c_blank =						(cons->c_blank & 0xF8FF) |						(ansi_colors[(n - 30)] << 8);				} else				if (40 <= n && n <= 47) {					/* Background color */					cons->c_attr =						(cons->c_attr & 0x8FFF) |						(ansi_colors[(n - 40)] << 12);					cons->c_blank =						(cons->c_blank & 0x8FFF) |						(ansi_colors[(n - 40)] << 12);				}			}			if (cons->c_reverse) {				/* Swap fg and bg colors */				cons->c_attr =	((cons->c_attr & 0x7000) >> 4) |						((cons->c_attr & 0x0700) << 4) |						((cons->c_attr & 0x8800));			}		}		break;	}  }  cons->c_esc_state = 0;}/*===========================================================================* *				set_6845				     * *===========================================================================*/PRIVATE void set_6845(reg, val)int reg;			/* which register pair to set */unsigned val;			/* 16-bit value to set it to */{/* Set a register pair inside the 6845. * Registers 12-13 tell the 6845 where in video ram to start * Registers 14-15 tell the 6845 where to put the cursor */  pvb_pair_t char_out[4];  pv_set(char_out[0], vid_port + INDEX, reg);	/* set index register */  pv_set(char_out[1], vid_port + DATA, (val>>8) & BYTE);    /* high byte */  pv_set(char_out[2], vid_port + INDEX, reg + 1);	    /* again */  pv_set(char_out[3], vid_port + DATA, val&BYTE);	    /* low byte */  sys_voutb(char_out, 4);			/* do actual output */}/*===========================================================================* *				get_6845				     * *===========================================================================*/PRIVATE void get_6845(reg, val)int reg;			/* which register pair to set */unsigned *val;			/* 16-bit value to set it to */{  char v1, v2;/* Get a register pair inside the 6845.  */  sys_outb(vid_port + INDEX, reg);   sys_inb(vid_port + DATA, &v1);   sys_outb(vid_port + INDEX, reg+1);   sys_inb(vid_port + DATA, &v2);   *val = (v1 << 8) | v2;}/*===========================================================================* *				beep					     * *===========================================================================*/PRIVATE void beep(){/* Making a beeping sound on the speaker (output for CRTL-G). * This routine works by turning on the bits 0 and 1 in port B of the 8255 * chip that drive the speaker. */  static timer_t tmr_stop_beep;  pvb_pair_t char_out[3];  clock_t now;  int port_b_val, s;    /* Fetch current time in advance to prevent beeping delay. */  if ((s=getuptime(&now)) != OK)  	panic("TTY","Console couldn't get clock's uptime.", s);  if (!beeping) {	/* Set timer channel 2, square wave, with given frequency. */        pv_set(char_out[0], TIMER_MODE, 0xB6);	        pv_set(char_out[1], TIMER2, (BEEP_FREQ >> 0) & BYTE);        pv_set(char_out[2], TIMER2, (BEEP_FREQ >> 8) & BYTE);        if (sys_voutb(char_out, 3)==OK) {        	if (sys_inb(PORT_B, &port_b_val)==OK &&        	    sys_outb(PORT_B, (port_b_val|3))==OK)        	    	beeping = TRUE;        }  }  /* Add a timer to the timers list. Possibly reschedule the alarm. */  tmrs_settimer(&tty_timers, &tmr_stop_beep, now+B_TIME, stop_beep, NULL);  if (tty_timers->tmr_exp_time != tty_next_timeout) {  	tty_next_timeout = tty_timers->tmr_exp_time;  	if ((s=sys_setalarm(tty_next_timeout, 1)) != OK)  		panic("TTY","Console couldn't set alarm.", s);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品国产亚洲一区二区三区在线观看| 中文字幕一区二区三区四区不卡| 欧美怡红院视频| 成人网在线免费视频| 久久99精品久久久久久动态图| 午夜精品123| 性久久久久久久久| 亚洲成人资源网| 夜夜精品视频一区二区| 99免费精品视频| 成人激情文学综合网| 成人福利在线看| 成人午夜伦理影院| 成人av在线资源网| av动漫一区二区| 91在线免费播放| 在线观看区一区二| 欧美日本视频在线| 日韩欧美一级精品久久| 精品国产百合女同互慰| 久久久另类综合| 国产日韩v精品一区二区| 国产精品污污网站在线观看| 日本一区二区不卡视频| 自拍偷拍亚洲综合| 亚洲另类春色国产| 亚洲福利视频一区| 欧美aaaaa成人免费观看视频| 久久精品72免费观看| 国产在线精品一区二区不卡了| 国产精品一区在线观看你懂的| 成人性视频网站| 色爱区综合激月婷婷| 欧美精品欧美精品系列| 久久香蕉国产线看观看99| 中文无字幕一区二区三区 | 福利91精品一区二区三区| 成人午夜在线视频| 欧美在线观看视频在线| 日韩欧美视频在线| 中文字幕乱码一区二区免费| 一区二区三区四区精品在线视频 | 国产一区中文字幕| 99麻豆久久久国产精品免费| 欧洲一区二区av| 日韩精品一区二区三区视频| 国产精品视频第一区| 亚洲一区二区成人在线观看| 久久成人麻豆午夜电影| hitomi一区二区三区精品| 欧美性受xxxx| 久久亚洲综合色一区二区三区| 国产精品毛片久久久久久| 亚洲成人精品一区| 国产精品一区久久久久| 欧美影视一区在线| 欧美韩国日本一区| 亚洲aaa精品| 丁香六月久久综合狠狠色| 欧美日韩你懂得| 国产精品色在线| 日韩在线a电影| 本田岬高潮一区二区三区| 欧美一区二区视频在线观看2020| 国产精品欧美一区喷水| 奇米精品一区二区三区四区| 成人短视频下载| 欧美一二三四在线| 亚洲美女偷拍久久| 国产综合久久久久影院| 欧美在线播放高清精品| 国产日产亚洲精品系列| 日韩电影在线免费观看| 成人免费高清在线| 日韩欧美另类在线| 亚洲一区免费观看| 成人免费视频app| 精品国产一区二区三区久久影院| 亚洲一区二区黄色| 91在线云播放| 欧美国产一区二区在线观看| 麻豆一区二区在线| 欧美日韩在线播放| 亚洲免费观看高清完整版在线观看| 精品中文av资源站在线观看| 欧美日韩中文字幕一区二区| 国产精品视频在线看| 狠狠色狠狠色综合| 欧美一卡2卡3卡4卡| 亚洲午夜国产一区99re久久| av激情综合网| 中文字幕不卡在线观看| 国内精品伊人久久久久影院对白| 欧美猛男超大videosgay| 玉足女爽爽91| 91视视频在线观看入口直接观看www| 久久精品夜色噜噜亚洲aⅴ| 免费视频最近日韩| 日韩一区二区三区四区| 婷婷六月综合网| 欧美日韩电影在线| 亚洲成人第一页| 69p69国产精品| 亚洲成年人网站在线观看| 欧美三级欧美一级| 亚洲国产日韩a在线播放| 欧美日韩专区在线| 午夜电影一区二区| 欧美福利视频一区| 日本欧美一区二区| 日韩精品一区二区在线| 美女视频一区在线观看| 精品久久国产字幕高潮| 国模无码大尺度一区二区三区| 欧美电视剧免费观看| 精品无码三级在线观看视频| 久久欧美一区二区| 国产成人精品一区二| 国产精品女主播av| 色久综合一二码| 亚洲一二三四久久| 色婷婷久久99综合精品jk白丝| 国产欧美精品国产国产专区| 91在线视频播放地址| 亚洲人快播电影网| 91蜜桃免费观看视频| 亚洲图片激情小说| 国产精品一卡二卡在线观看| 国产偷国产偷精品高清尤物| 国产电影一区在线| 国产精品九色蝌蚪自拍| a亚洲天堂av| 一区二区三区日韩欧美精品| 777xxx欧美| 免费欧美在线视频| 久久夜色精品一区| 国产成人在线看| 日本一区二区三区电影| 日本精品视频一区二区三区| 亚洲图片一区二区| 欧美精品色综合| 国产曰批免费观看久久久| 亚洲丝袜精品丝袜在线| 色播五月激情综合网| 午夜精品成人在线| 亚洲精品一区二区三区福利 | 国产一区欧美日韩| 亚洲国产激情av| 欧美日韩一区不卡| 美女视频黄频大全不卡视频在线播放| 26uuu精品一区二区三区四区在线| 国产盗摄精品一区二区三区在线| 国产亚洲精品bt天堂精选| 91在线porny国产在线看| 亚洲综合视频在线| 欧美男人的天堂一二区| 国产一区二区视频在线播放| 国产精品麻豆一区二区| 欧美一级夜夜爽| 成人免费看视频| 午夜日韩在线观看| 国产香蕉久久精品综合网| 欧美日韩亚州综合| 国产精品一区二区在线观看不卡 | 欧美丝袜丝交足nylons| 美国三级日本三级久久99| 亚洲国产成人在线| 欧美主播一区二区三区美女| 精品无人区卡一卡二卡三乱码免费卡| 国产精品福利av| 欧美二区在线观看| 久久成人免费电影| 亚洲成av人在线观看| 久久久噜噜噜久噜久久综合| 色先锋久久av资源部| 日韩一卡二卡三卡| 天堂成人免费av电影一区| 久久九九久精品国产免费直播| 精品成人a区在线观看| k8久久久一区二区三区| 久久亚洲欧美国产精品乐播 | 欧美亚洲一区二区三区四区| 午夜精品一区在线观看| 91麻豆精品国产91久久久久久| 亚洲免费毛片网站| 久久亚洲二区三区| 欧美久久久久久蜜桃| 亚洲国产精品欧美一二99| 国产精品天美传媒沈樵| 欧美一区二区免费| 91极品视觉盛宴| 国产v综合v亚洲欧| 免费在线观看不卡| 日韩制服丝袜av| 一区二区三区免费网站| 国产日韩欧美精品电影三级在线| 成人一级黄色片| 国产成人精品影院| 久久 天天综合| 午夜伊人狠狠久久|