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

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

?? display.c

?? 這是新華龍(www.xhl.xom.xn)開發的
?? C
?? 第 1 頁 / 共 2 頁
字號:
	case '5':
	case '6':
	case '7':
	case '8':
	case '9':
		/* Collect decimal number */
		dp->arg[dp->argi] = 10*dp->arg[dp->argi] + (c - '0');
		return;
	case ';':	/* Next argument is beginning */
		if(dp->argi <= MAXARGS - 1)
			dp->argi++;
		dp->arg[dp->argi] = 0;
		return;
	case '@':	/* Open up space for character */
		dinsert(dp);
		break;
	case 'A':	/* Cursor up */
		if(dp->arg[0] == 0)
			dp->arg[0] = 1;	/* Default is one line */
		if(dp->arg[0] <= dp->row)
			dp->row -= dp->arg[0];
		else
			dp->row = 0;
		dp->flags.dirty_cursor = 1;
		break;
	case 'B':	/* Cursor down */
		if(dp->arg[0] == 0)
			dp->arg[0] = 1;	/* Default is one line */
		dp->row += dp->arg[0];
		if(dp->row > dp->slast)
			dp->row = dp->slast;
		dp->flags.dirty_cursor = 1; 
		break;
	case 'C':	/* Cursor right */
		if(dp->arg[0] == 0)
			dp->arg[0] = 1;	/* Default is one column */
		dp->col += dp->arg[0];
		if(dp->col >= dp->cols)
			dp->col = dp->cols - 1;
		dp->flags.dirty_cursor = 1;
		break;
	case 'D':	/* Cursor left */
		if(dp->arg[0] == 0)
			dp->arg[0] = 1;	/* Default is one column */
		if(dp->arg[0] <= dp->col)
			dp->col -= dp->arg[0];
		else
			dp->col = 0;
		dp->flags.dirty_cursor = 1;
		break;
	case 'f':
	case 'H':	/* Cursor motion - limit to scrolled region */
		i = (dp->arg[0] == 0) ? 0 : dp->arg[0] - 1;
		if(i > dp->slast)
			i = dp->slast;
		dp->row = i;

		i = (dp->arg[1] == 0) ? 0 : dp->arg[1] - 1;
		if(i >= dp->cols)
			i = dp->cols - 1;
		dp->col = i;
		dp->state = DISP_NORMAL;
		dp->flags.dirty_cursor = 1;
		break;
	case 'h':	/* Set mode */
		switch(dp->arg[0]){
		case 7:	/* Turn on wrap mode */
			dp->flags.no_line_wrap = 0;
			break;
		}
		break;
	case 'J':	/* Clear screen */
		switch(dp->arg[0]){
		case 2:
			dclrscr(dp);	/* Clear entire screen, home cursor */
			break;
		case 0:
			dclreod(dp,dp->row,dp->col);	/* Clear to end of screen (VT-100) */
			break;
		}
		break;
	case 'K':	/* Erase to end of current line */
		dclreol(dp,dp->row,dp->col);
		break;
	case 'L':	/* Add blank line */
		dinsline(dp);
		break;		
	case 'l':	/* Clear mode */
		switch(dp->arg[0]){
		case 7:	/* Turn off wrap mode */
			dp->flags.no_line_wrap = 1;
			break;
		}
		break;
	case 'M':	/* Delete line */
		ddelline(dp);
		break;
	case 'm':	/* Set screen attributes */
		for(i=0;i<=dp->argi;i++){
			dattrib(dp,dp->arg[i]);
		}
		break;
	case 'P':	/* Delete character */
		ddelchar(dp);
		break;
	case 's':	/* Save cursor position */
		dp->savcol = dp->col;
		dp->savrow = dp->row;
		break;
	case 'u':	/* Restore cursor position */
		dp->col = dp->savcol;
		dp->row = dp->savrow;
		dp->flags.dirty_cursor = 1;
		break;
	case 'g':
		switch(dp->arg[0]){
		case 0:
			dp->tabstops[dp->col] = 0;
			break;
		case 3:
			memset(dp->tabstops,0,dp->cols);
			break;
		}
		break;
	}
	dp->state = DISP_NORMAL;
}
/* Clear from specified location to end of screen, leaving cursor as is */
static void
dclreod(dp,row,col)
struct display *dp;
int row,col;
{
	dclreol(dp,row,col);	/* Clear current line */
	for(row = row + 1;row <= dp->slast;row++)
		dclreol(dp,row,0);	/* Clear all lines below */
}
/* Insert space at cursor, moving all chars on right to right one position */
static void
dinsert(dp)
struct display *dp;
{
	int i = 2*(dp->cols - dp->col - 1);
	uint8 *cp = bufloc(dp,dp->row,dp->col);
	struct dirty *dirtp = &dp->dirty[dp->row];

	if(i != 0)
		memmove(cp+2,cp,i);	/* handles overlapping blocks */
	*cp++ = ' ';
	*cp = dp->attrib;
	/* Dirty everything from the cursor to the right edge */
	if(dp->col < dirtp->lcol)
		dirtp->lcol = dp->col;
	dirtp->rcol = dp->cols-1;
}
/* Delete character at cursor, moving chars to right left one position */
static void
ddelchar(dp)
struct display *dp;
{
	uint8 *cp = bufloc(dp,dp->row,dp->col);
	int i = 2*(dp->cols-dp->col-1);
	struct dirty *dirtp = &dp->dirty[dp->row];

	/* Copy characters to right one space left */
	if(i != 0)
		memmove(cp,cp+2,i);	/* memmove handles overlapping blocks */
	/* Clear right most character on line */
	cp[i] = ' ';
	cp[i+1] = dp->attrib;
	/* Dirty everything from the cursor to the right edge */
	if(dp->col < dirtp->lcol)
		dirtp->lcol = dp->col;
	dirtp->rcol = dp->cols-1;
}
/* Delete line containing cursor, moving lines below up one line */
static void
ddelline(dp)
struct display *dp;
{
	uint8 *cp1,*cp2;
	int row;
	struct dirty *dirtp;

	for(row=dp->row,dirtp = &dp->dirty[row];row < dp->slast;row++,dirtp++){
		cp1 = bufloc(dp,row,0);
		cp2 = bufloc(dp,row+1,0);
		memcpy(cp1,cp2,dp->cols*2);
		/* Dirty entire line */
		dirtp->lcol = 0;
		dirtp->rcol = dp->cols-1;
	}
	/* Clear bottom line */
	dclreol(dp,dp->slast,0);
}		
/* Insert blank line where cursor is. Push existing lines down one */
static void
dinsline(dp)
struct display *dp;
{
	uint8 *cp1,*cp2;
	int row;
	struct dirty *dirtp;

	/* Copy lines down */
	for(row = dp->slast,dirtp = &dp->dirty[row];row > dp->row;row--){
		cp1 = bufloc(dp,row-1,0);
		cp2 = bufloc(dp,row,0);
		memcpy(cp2,cp1,2*dp->cols);
		/* Dirty entire line */
		dirtp->lcol = 0;
		dirtp->rcol = dp->cols-1;
	}
	/* Clear current line */
	dclreol(dp,dp->row,0);
}

/* Process an argument to an attribute set command */
static void
dattrib(dp,val)
struct display *dp;
int val;
{
	switch(val){
	case 0:	/* Normal white on black */
		dp->attrib = 0x7;
		break;
	case 1:	/* High intensity */
		dp->attrib |= 0x8;
		break;
	case 5:	/* Blink on */
		dp->attrib |= 0x80;
		break;
	case 7:	/* Reverse video (black on white) */
		dp->attrib = 0x70;
		break;
	default:
		if(val >= 30 && val < 38){
			/* Set foreground color */
			dp->attrib = (dp->attrib & ~0x7) | fgattr[val - 30];
		} else if(val >= 40 && val < 48){
			/* Set background color */
			dp->attrib = (dp->attrib & ~0x70) | ((bgattr[val - 40]) << 4);
		}
		break;
	}
 }
/* Display character */
static void
dchar(dp,c)
struct display *dp;
uint8 c;
{
	uint8 *cp;
	int row,rowchange;
	struct dirty *dirtp;

	rowchange = 0;
	switch(c){
	case ESC:
		dp->state = DISP_ESCAPE;
		return;
	case CTLQ:	/*****/
	case '\0':	/* Ignore nulls and bells */
	case BELL:
		break;
	case '\b':	/* Backspace */
		if(dp->col > 0){
			dp->col--;
			dp->flags.dirty_cursor = 1;
		}
		break;
	case FF:	/* Page feed */
		dclrscr(dp);
		break;
	case '\t':	/* Tab */
		while(dp->col < dp->cols-1){
			if(dp->tabstops[++dp->col])
				break;
		}
		dp->flags.dirty_cursor = 1;
		break;
	case '\n':	/* Move cursor down one row */
		dp->row++;
		rowchange = 1;
		dp->flags.dirty_cursor = 1;
		break;
	case '\r':	/* Move cursor to beginning of current row */
		dp->col = 0;
		dp->flags.dirty_cursor = 1;
		break;
	default:	/* Display character on screen */
		/* Compute location in screen buffer memory */
		cp = bufloc(dp,dp->row,dp->col);
		/* Normal display */
		if(c != *cp || cp[1] != dp->attrib){
			dirtp = &dp->dirty[dp->row];
			if(dp->col < dirtp->lcol)
				dirtp->lcol = dp->col;
			if(dp->col > dirtp->rcol)
				dirtp->rcol = dp->col;
		}
		*cp++ = c;
		*cp = dp->attrib;
		dp->flags.dirty_cursor = 1;
		/* Update cursor position, wrapping if necessary */
		if(++dp->col == dp->cols){
			if(dp->flags.no_line_wrap){
				dp->col--;
			} else {
				dp->col = 0;
				dp->row++;
				rowchange = 1;
			}
		}
	}
	/* Scroll screen if necessary */
	if(rowchange && dp->row > dp->slast){
		dp->row--;
		/* Scroll screen up */
		dp->scroll = (dp->scroll + 1) % (dp->slast + 1);
		if(!dp->flags.no_scroll){
			for(row=0,dirtp=&dp->dirty[row];row <=dp->slast;row++,dirtp++){
				dirtp->lcol = 0;
				dirtp->rcol = dp->cols-1;
			}
		}
		if(dp->sfile != NULL){
			uint8 *cp;

			/* When scrolled back, leave screen stationary */
			if(dp->flags.scrollbk && dp->sfoffs != dp->sflimit)
				dp->sfoffs++;

			/* Copy scrolled line to scrollback file */
			cp = bufloc(dp,dp->row,0);
			fseek(dp->sfile,dp->sfseek,SEEK_SET);
			fwrite(cp,2,dp->cols,dp->sfile);
			dp->sfseek += 2*dp->cols;
			if(dp->sfseek >= 2*dp->cols*dp->sflimit)
				dp->sfseek = 0;
			if(dp->sfsize < dp->sflimit)
				dp->sfsize++;
		}
		dclreol(dp,dp->row,0);
	}
}

/* Clear from specified location to end of line. Cursor is not moved */
static void
dclreol(dp,row,col)
struct display *dp;
int row,col;
{
	uint8 *cp = bufloc(dp,row,col);
	struct dirty *dirtp = &dp->dirty[row];
	int i;

	for(i=dp->cols - col;i!=0;i--){
		*cp++ = ' ';
		*cp++ = dp->attrib;
	}
	/* Dirty from current column to right edge */
	if(col < dirtp->lcol)
		dirtp->lcol = col;
	dirtp->rcol = dp->cols-1;
}
/* Move cursor to top left corner, clear screen */
static void
dclrscr(dp)
struct display *dp;
{
	dclreod(dp,0,0);
	dp->row = dp->col = 0;
	dp->scroll = 0;
	dp->flags.dirty_cursor = 1;
}
/* Return pointer into screen buffer for specified cursor location.
 * Not guaranteed to be valid past the end of the current line due to
 * scrolling
 */
static uint8 *
bufloc(dp,row,col)
struct display *dp;
int row,col;
{
#ifndef	notdef
	if(row < 0 || row >= dp->rows || col < 0 || col >= dp->cols){
		stktrace();
		cprintf("panic: bufloc(%p,%d,%d)\n",dp,row,col);
		exit(1);
	}
#endif
	if(row <= dp->slast)
		row = (row + dp->scroll) % (dp->slast + 1);
	return dp->buf + 2*(col + dp->cols*row);
}
/* Immediately display short debug string on lower right corner of display */
void
debug(s)
char *s;
{
	int i;
	static uint8 msg[2*DSIZ];

	if(msg[1] != 0x7){
		/* One time initialization to blanks with white-on-black */
		for(i=0;i<DSIZ;i++){
			msg[2*i] = ' ';
			msg[2*i+1] = 0x7;
		}
	}
	if(s == NULL)
		return;
	for(i=0;i<DSIZ && *s != '\0';i++)
		msg[2*i] = (uint8) *s++;

	for(;i<DSIZ;i++)
		msg[2*i] = ' ';

	puttext(DCOL,25,80,25,msg);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲日本一区二区| 91啦中文在线观看| 亚洲精品一线二线三线无人区| 欧美日韩成人在线| 国产精品污网站| 日韩国产欧美一区二区三区| 国产一区二区精品在线观看| 99久精品国产| 2020国产成人综合网| 亚洲同性gay激情无套| 偷窥少妇高潮呻吟av久久免费| 激情综合网最新| 日本道色综合久久| 久久蜜臀精品av| 亚洲成av人片一区二区| 亚洲动漫第一页| 久久黄色级2电影| 色欧美片视频在线观看在线视频| 日韩一级视频免费观看在线| 亚洲欧美综合另类在线卡通| 日本不卡一二三| 一本色道亚洲精品aⅴ| 精品理论电影在线观看| 亚洲一区二区四区蜜桃| 成人av午夜影院| 日韩小视频在线观看专区| 亚洲另类在线视频| 国产精品中文欧美| 欧美疯狂做受xxxx富婆| 最新日韩av在线| 国产曰批免费观看久久久| 欧洲一区二区三区在线| 国产日本欧洲亚洲| 麻豆中文一区二区| 欧美伦理视频网站| 亚洲国产精品一区二区久久恐怖片| 国产精品中文欧美| 久久综合九色综合欧美亚洲| 婷婷综合五月天| 欧美亚洲综合久久| 亚洲丝袜另类动漫二区| 国产xxx精品视频大全| 欧美电影免费观看高清完整版在| 亚洲国产精品欧美一二99| av福利精品导航| 国产欧美中文在线| 丰满放荡岳乱妇91ww| 久久精品亚洲乱码伦伦中文| 久久99精品久久只有精品| 欧美一区二区三区啪啪| 亚洲成av人影院| 91精品国产综合久久婷婷香蕉| 亚洲一区二区五区| 欧美亚洲国产一区二区三区va| 日韩毛片精品高清免费| 99精品久久99久久久久| 综合久久综合久久| 99国产精品视频免费观看| 精品国产乱码久久久久久牛牛| 一区二区高清视频在线观看| 欧美性色黄大片手机版| 亚洲www啪成人一区二区麻豆 | 丁香啪啪综合成人亚洲小说| 精品国产成人系列| 国产又粗又猛又爽又黄91精品| 精品国产乱码久久久久久1区2区 | aaa欧美色吧激情视频| 国产精品乱码妇女bbbb| 成人av网站大全| 中文字幕在线视频一区| 日本道色综合久久| 日韩精品每日更新| 欧美精品一区二区三区蜜桃视频| 国内外成人在线| 国产精品入口麻豆原神| 99天天综合性| 亚洲成人手机在线| 欧美成人一区二区三区在线观看 | 国产成人综合亚洲91猫咪| 国产精品欧美一区二区三区| 99精品欧美一区二区三区综合在线| 一区二区三区在线高清| 欧美一区三区二区| 国产999精品久久| 亚洲一区二区欧美日韩| 日韩欧美国产电影| aa级大片欧美| 免费成人在线网站| 亚洲国产经典视频| 欧美视频三区在线播放| 激情六月婷婷综合| 一区二区三区中文免费| 国产日韩三级在线| 91国内精品野花午夜精品| 久久精品99国产精品日本| 自拍偷在线精品自拍偷无码专区 | 婷婷激情综合网| 国产亚洲成aⅴ人片在线观看| 欧美性一二三区| 国产成人精品影视| 亚洲www啪成人一区二区麻豆| 国产欧美日韩麻豆91| 欧美日本在线一区| 99久久精品免费看国产免费软件| 奇米精品一区二区三区四区 | 国产999精品久久久久久| 亚洲成a人v欧美综合天堂| 中文久久乱码一区二区| 日韩视频免费观看高清完整版 | 欧美激情在线一区二区| 91免费在线播放| 国产呦萝稀缺另类资源| 日韩精品免费专区| 亚洲自拍偷拍网站| 国产亚洲精品bt天堂精选| 欧美高清性hdvideosex| 99视频有精品| 福利一区二区在线| 高清久久久久久| 韩日av一区二区| 亚洲欧美一区二区三区久本道91| 精品国产第一区二区三区观看体验| 欧美又粗又大又爽| 99久久夜色精品国产网站| 久久99精品久久久久久久久久久久| 亚洲一区二区三区三| 亚洲美女视频在线| 国产精品久久久久9999吃药| www国产精品av| 日韩视频免费观看高清完整版在线观看 | 另类小说欧美激情| 日韩高清欧美激情| 亚洲3atv精品一区二区三区| 一区二区三区色| 亚洲精品免费在线| 国产精品第四页| 欧美精品三级日韩久久| 色综合激情五月| 欧美亚洲综合一区| 欧美日韩成人一区| 日韩欧美综合在线| 26uuu精品一区二区| 久久久综合网站| 国产精品天天看| 亚洲视频在线一区二区| 日韩一区在线看| 夜夜嗨av一区二区三区网页| 亚洲成av人在线观看| 美女脱光内衣内裤视频久久影院| 蜜臀av一区二区| 国产一区二区在线免费观看| 国产在线视视频有精品| 精品中文字幕一区二区| 岛国精品在线观看| 日本精品免费观看高清观看| k8久久久一区二区三区| 欧美在线|欧美| 欧美精品高清视频| 欧美精品一区二区三区在线播放| 久久亚洲精华国产精华液| 最新国产成人在线观看| 亚洲电影激情视频网站| 免费成人在线播放| 成人av综合一区| 欧美日韩国产不卡| 国产欧美一区二区三区网站| 中文字幕一区二区三区精华液| 一区二区三区欧美亚洲| 麻豆成人在线观看| 成人a级免费电影| 7878成人国产在线观看| 精品国产a毛片| 亚洲九九爱视频| 久久99在线观看| 99re66热这里只有精品3直播| 欧美日韩中文一区| 久久色中文字幕| 亚洲综合无码一区二区| 久久99国产精品麻豆| 91小视频在线免费看| 欧美日韩国产小视频在线观看| 欧美午夜寂寞影院| 久久丝袜美腿综合| 视频一区欧美日韩| 极品瑜伽女神91| 欧美吞精做爰啪啪高潮| 国产亚洲视频系列| 午夜精品久久久久影视| 成人一区在线观看| 欧美电影免费提供在线观看| 亚洲日穴在线视频| 国产精品一区二区在线看| 亚洲欧美视频一区| 奇米在线7777在线精品 | 亚洲丰满少妇videoshd| 国产宾馆实践打屁股91| 亚洲精品在线观| 日韩二区三区四区| 色狠狠综合天天综合综合| 国产精品丝袜91|