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

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

?? console.c.bak

?? LINUX 0.11版內核代碼。 并有代碼分析說明。
?? BAK
?? 第 1 頁 / 共 3 頁
字號:
//// 光標上移一行(ri - reverse line feed 反向換行)。static voidri (void){// 如果光標不在第1 行上,則直接修改光標當前行標量y--,并調整光標對應顯示內存位置pos,減去// 屏幕上一行字符所對應的內存長度字節數。  if (y > top)    {      y--;      pos -= video_size_row;      return;    }// 否則需要將屏幕內容下移一行。  scrdown ();}// 光標回到第1 列(0 列)左端(cr - carriage return 回車)。static voidcr (void){// 光標所在的列號*2 即0 列到光標所在列對應的內存字節長度。  pos -= x << 1;  x = 0;}// 擦除光標前一字符(用空格替代)(del - delete 刪除)。static voiddel (void){// 如果光標沒有處在0 列,則將光標對應內存位置指針pos 后退2 字節(對應屏幕上一個字符),然后// 將當前光標變量列值減1,并將光標所在位置字符擦除。  if (x)    {      pos -= 2;      x--;      *(unsigned short *) pos = video_erase_char;    }}//// 刪除屏幕上與光標位置相關的部分,以屏幕為單位。csi - 控制序列引導碼(Control Sequence// Introducer)。// ANSI 轉義序列:'ESC [sJ'(s = 0 刪除光標到屏幕底端;1 刪除屏幕開始到光標處;2 整屏刪除)。// 參數:par - 對應上面s。static voidcsi_J (int par){  long count; //__asm__ ("cx")	// 設為寄存器變量。  long start; //__asm__ ("di")// 首先根據三種情況分別設置需要刪除的字符數和刪除開始的顯示內存位置。  switch (par)    {    case 0:			/* erase from cursor to end of display *//* 擦除光標到屏幕底端 */      count = (scr_end - pos) >> 1;      start = pos;      break;    case 1:			/* erase from start to cursor *//* 刪除從屏幕開始到光標處的字符 */      count = (pos - origin) >> 1;      start = origin;      break;    case 2:			/* erase whole display *//* 刪除整個屏幕上的字符 */      count = video_num_columns * video_num_lines;      start = origin;      break;    default:      return;    }// 然后使用擦除字符填寫刪除字符的地方。// %0 - ecx(要刪除的字符數count);%1 - edi(刪除操作開始地址);%2 - eax(填入的擦除字符)。  _asm {	  pushf
	  mov ecx,count;
	  mov edi,start;
	  mov ax,video_erase_char;
	  cld;
	  rep stosw;	  popf
  }
//  __asm__ ("cld\n\t" "rep\n\t" "stosw\n\t"::"c" (count), "D" (start), "a" (video_erase_char):"cx", "di");}//// 刪除行內與光標位置相關的部分,以一行為單位。// ANSI 轉義字符序列:'ESC [sK'(s = 0 刪除到行尾;1 從開始刪除;2 整行都刪除)。static voidcsi_K (int par){  long count; //__asm__ ("cx")	// 設置寄存器變量。  long start; //__asm__ ("di")// 首先根據三種情況分別設置需要刪除的字符數和刪除開始的顯示內存位置。  switch (par)    {    case 0:			/* erase from cursor to end of line *//* 刪除光標到行尾字符 */      if (x >= video_num_columns)	return;      count = video_num_columns - x;      start = pos;      break;    case 1:			/* erase from start of line to cursor *//* 刪除從行開始到光標處 */      start = pos - (x << 1);      count = (x < video_num_columns) ? x : video_num_columns;      break;    case 2:			/* erase whole line *//* 將整行字符全刪除 */      start = pos - (x << 1);      count = video_num_columns;      break;    default:      return;    }// 然后使用擦除字符填寫刪除字符的地方。// %0 - ecx(要刪除的字符數count);%1 - edi(刪除操作開始地址);%2 - eax(填入的擦除字符)。  _asm {	  pushf
	  mov ecx,count;
	  mov edi,start;
	  mov ax,video_erase_char;
	  cld;
	  rep stosw;	  popf
  }
//  __asm__ ("cld\n\t" "rep\n\t" "stosw\n\t"::"c" (count), "D" (start), "a" (video_erase_char):"cx", "di");}//// 允許翻譯(重顯)(允許重新設置字符顯示方式,比如加粗、加下劃線、閃爍、反顯等)。// ANSI 轉義字符序列:'ESC [nm'。n = 0 正常顯示;1 加粗;4 加下劃線;7 反顯;27 正常顯示。voidcsi_m (void){  unsigned int i;  for (i = 0; i <= npar; i++)    switch (par[i])      {      case 0:	attr = 0x07;	break;      case 1:	attr = 0x0f;	break;      case 4:	attr = 0x0f;	break;      case 7:	attr = 0x70;	break;      case 27:	attr = 0x07;	break;      }}//// 根據設置顯示光標。// 根據顯示內存光標對應位置pos,設置顯示控制器光標的顯示位置。static _inline voidset_cursor (void){  cli ();// 首先使用索引寄存器端口選擇顯示控制數據寄存器r14(光標當前顯示位置高字節),然后寫入光標// 當前位置高字節(向右移動9 位表示高字節移到低字節再除以2)。是相對于默認顯示內存操作的。  outb_p (14, video_port_reg);  outb_p ((unsigned char)(0xff & ((pos - video_mem_start) >> 9)), video_port_val);// 再使用索引寄存器選擇r15,并將光標當前位置低字節寫入其中。  outb_p (15, video_port_reg);  outb_p ((unsigned char)(0xff & ((pos - video_mem_start) >> 1)), video_port_val);  sti ();}//// 發送對終端VT100 的響應序列。// 將響應序列放入讀緩沖隊列中。static voidrespond (struct tty_struct *tty){	char *p = RESPONSE;	cli ();			// 關中斷。	while (*p)	{				// 將字符序列放入寫隊列。		PUTCH (*p, tty->read_q);		p++;	}	sti ();			// 開中斷。	copy_to_cooked (tty);		// 轉換成規范模式(放入輔助隊列中)。}//// 在光標處插入一空格字符。static voidinsert_char (void){  unsigned long i = x;  unsigned short tmp, old = video_erase_char;  unsigned short *p = (unsigned short *) pos;// 光標開始的所有字符右移一格,并將擦除字符插入在光標所在處。// 若一行上都有字符的話,則行最后一個字符將不會更動??  while (i++ < video_num_columns)    {      tmp = *p;      *p = old;      old = tmp;      p++;    }}//// 在光標處插入一行(則光標將處在新的空行上)。// 將屏幕從光標所在行到屏幕底向下卷動一行。static voidinsert_line (void){  int oldtop, oldbottom;  oldtop = top;			// 保存原top,bottom 值。  oldbottom = bottom;  top = y;			// 設置屏幕卷動開始行。  bottom = video_num_lines;	// 設置屏幕卷動最后行。  scrdown ();			// 從光標開始處,屏幕內容向下滾動一行。  top = oldtop;			// 恢復原top,bottom 值。  bottom = oldbottom;}//// 刪除光標處的一個字符。static voiddelete_char (void){  unsigned long i;  unsigned short *p = (unsigned short *) pos;// 如果光標超出屏幕最右列,則返回。  if (x >= video_num_columns)    return;// 從光標右一個字符開始到行末所有字符左移一格。  i = x;  while (++i < video_num_columns)  {      *p = *(p + 1);      p++;  }// 最后一個字符處填入擦除字符(空格字符)。  *p = video_erase_char;}//// 刪除光標所在行。// 從光標所在行開始屏幕內容上卷一行。static voiddelete_line (void){  int oldtop, oldbottom;  oldtop = top;			// 保存原top,bottom 值。  oldbottom = bottom;  top = y;			// 設置屏幕卷動開始行。  bottom = video_num_lines;	// 設置屏幕卷動最后行。  scrup ();			// 從光標開始處,屏幕內容向上滾動一行。  top = oldtop;			// 恢復原top,bottom 值。  bottom = oldbottom;}//// 在光標處插入nr 個字符。// ANSI 轉義字符序列:'ESC [n@ '。// 參數 nr = 上面n。static voidcsi_at (unsigned int nr){// 如果插入的字符數大于一行字符數,則截為一行字符數;若插入字符數nr 為0,則插入1 個字符。  if (nr > video_num_columns)    nr = video_num_columns;  else if (!nr)    nr = 1;// 循環插入指定的字符數。  while (nr--)    insert_char ();}//// 在光標位置處插入nr 行。// ANSI 轉義字符序列'ESC [nL'。static voidcsi_L (unsigned int nr){// 如果插入的行數大于屏幕最多行數,則截為屏幕顯示行數;若插入行數nr 為0,則插入1 行。  if (nr > video_num_lines)    nr = video_num_lines;  else if (!nr)    nr = 1;// 循環插入指定行數nr。  while (nr--)    insert_line ();}//// 刪除光標處的nr 個字符。// ANSI 轉義序列:'ESC [nP'。static voidcsi_P (unsigned int nr){// 如果刪除的字符數大于一行字符數,則截為一行字符數;若刪除字符數nr 為0,則刪除1 個字符。  if (nr > video_num_columns)    nr = video_num_columns;  else if (!nr)    nr = 1;// 循環刪除指定字符數nr。  while (nr--)    delete_char ();}//// 刪除光標處的nr 行。// ANSI 轉義序列:'ESC [nM'。static voidcsi_M (unsigned int nr){// 如果刪除的行數大于屏幕最多行數,則截為屏幕顯示行數;若刪除的行數nr 為0,則刪除1 行。  if (nr > video_num_lines)    nr = video_num_lines;  else if (!nr)    nr = 1;// 循環刪除指定行數nr。  while (nr--)    delete_line ();}static int saved_x = 0;		// 保存的光標列號。static int saved_y = 0;		// 保存的光標行號。//// 保存當前光標位置。static voidsave_cur (void){  saved_x = x;  saved_y = y;}//// 恢復保存的光標位置。static voidrestore_cur (void){  gotoxy (saved_x, saved_y);}//// 控制臺寫函數。// 從終端對應的tty 寫緩沖隊列中取字符,并顯示在屏幕上。voidcon_write (struct tty_struct *tty){  int nr;  char c;// 首先取得寫緩沖隊列中現有字符數nr,然后針對每個字符進行處理。  nr = CHARS (tty->write_q);  while (nr--)  {// 從寫隊列中取一字符c,根據前面所處理字符的狀態state 分別處理。狀態之間的轉換關系為:// state = 0:初始狀態;或者原是狀態4;或者原是狀態1,但字符不是'[';// 1:原是狀態0,并且字符是轉義字符ESC(0x1b = 033 = 27);// 2:原是狀態1,并且字符是'[';// 3:原是狀態2;或者原是狀態3,并且字符是';'或數字。// 4:原是狀態3,并且字符不是';'或數字;    GETCH (tty->write_q, c);    switch (state)	{	case 0:// 如果字符不是控制字符(c>31),并且也不是擴展字符(c<127),則	  if (c > 31 && c < 127)	  {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美性高清videossexo| 国产无一区二区| 久久精品欧美一区二区三区麻豆| 成人深夜视频在线观看| 久久这里都是精品| 日韩av网站免费在线| 欧美视频中文字幕| 国产福利91精品| 欧美激情一区二区三区全黄| 国产mv日韩mv欧美| 亚洲日本一区二区三区| 99视频热这里只有精品免费| 国产精品黄色在线观看| 99re这里只有精品首页| 一区二区三区不卡视频| 欧美性大战久久久| 成人aa视频在线观看| 亚洲一区中文日韩| 日韩欧美国产成人一区二区| 看国产成人h片视频| 精品乱码亚洲一区二区不卡| www.色精品| 国产成人精品一区二区三区四区| 日本不卡视频一二三区| 国产色婷婷亚洲99精品小说| 日韩欧美一级精品久久| 欧美日韩精品免费| 国产精品99久久久久久久vr | 欧美三级日本三级少妇99| 五月天激情综合网| 欧美成人a∨高清免费观看| 欧美日韩视频不卡| 欧美午夜免费电影| 在线中文字幕一区二区| 全国精品久久少妇| 日韩av一级片| 麻豆精品新av中文字幕| 亚洲品质自拍视频| 久久综合久久鬼色| 精品88久久久久88久久久| 色8久久人人97超碰香蕉987| 91视频精品在这里| 久久99国内精品| 综合色中文字幕| 自拍偷自拍亚洲精品播放| 亚洲免费在线看| 亚洲精品国久久99热| 久久久国产一区二区三区四区小说 | 欧美成人猛片aaaaaaa| 欧美成人欧美edvon| 久久色视频免费观看| 久久久一区二区三区捆绑**| 国产亚洲精久久久久久| 国产精品情趣视频| 欧美一级片在线| 99在线精品观看| 色狠狠桃花综合| 欧美日韩国产首页在线观看| 3atv在线一区二区三区| 一本到三区不卡视频| 激情国产一区二区| 日韩电影在线免费看| 狂野欧美性猛交blacked| 国产精品1区2区| 91福利区一区二区三区| 6080午夜不卡| 国产女主播在线一区二区| 91精品国产色综合久久ai换脸| 欧美成va人片在线观看| 一色屋精品亚洲香蕉网站| 久久久精品免费网站| 国产精品初高中害羞小美女文| 艳妇臀荡乳欲伦亚洲一区| 麻豆成人av在线| a4yy欧美一区二区三区| 欧美久久久久久久久久| 欧美日韩一区二区三区在线 | 欧美性生活影院| 精品伦理精品一区| 亚洲视频在线一区二区| 青青国产91久久久久久| 不卡的av电影| 欧美一区二区三区播放老司机| 欧美极品另类videosde| 丝袜诱惑制服诱惑色一区在线观看| 亚洲制服欧美中文字幕中文字幕| 久久电影网电视剧免费观看| 不卡视频一二三四| 日韩视频免费观看高清完整版| 日韩欧美电影一区| 亚洲免费观看高清完整版在线观看熊 | 亚洲视频1区2区| 麻豆91精品91久久久的内涵| 色综合久久88色综合天天免费| 日韩视频一区二区三区| 亚洲色图视频网站| 国产一区二区三区香蕉| 国产91精品在线观看| 欧美人狂配大交3d怪物一区 | 亚洲裸体xxx| 国产一区二区美女诱惑| 欧美日韩亚洲不卡| 亚洲人成人一区二区在线观看| 韩国v欧美v日本v亚洲v| 91精品国产高清一区二区三区 | 亚洲成人免费影院| 人人超碰91尤物精品国产| 99re这里只有精品首页| 欧美国产精品专区| 国产一区在线视频| 欧美美女视频在线观看| 一区二区三区产品免费精品久久75 | 男人操女人的视频在线观看欧美| 91福利视频在线| 中国色在线观看另类| 蜜桃精品在线观看| 欧美人牲a欧美精品| 亚洲精品成人精品456| 99riav一区二区三区| 国产精品人妖ts系列视频| 国产一区二区三区免费播放| 3atv一区二区三区| 亚洲v中文字幕| 91高清在线观看| 亚洲六月丁香色婷婷综合久久| 成人免费毛片app| 中文字幕免费在线观看视频一区| 国产精品自拍在线| 精品国产成人系列| 国产一区日韩二区欧美三区| 日韩久久久久久| 久久精品国产成人一区二区三区| 欧美成人video| 国产在线精品免费| 欧美成人乱码一区二区三区| 久久黄色级2电影| 欧美精品一区二区三区很污很色的 | 欧美精品第1页| 日韩精品电影在线观看| 56国语精品自产拍在线观看| 日韩精品每日更新| 日韩女优av电影| 精品一区二区三区免费毛片爱| 欧美一区二区精品久久911| 免费精品视频在线| www国产精品av| 国产成人av电影| 一区在线播放视频| 精品国产乱码久久久久久久| 国产成人精品三级| 综合久久久久久| 欧美日韩一区在线| 久久97超碰国产精品超碰| 久久综合色婷婷| thepron国产精品| 亚洲国产精品影院| 成人av高清在线| 亚洲欧洲精品天堂一级| 欧美亚洲国产bt| 蜜桃av一区二区三区| 国产性色一区二区| 色爱区综合激月婷婷| 青草国产精品久久久久久| 久久久久88色偷偷免费| 91首页免费视频| 日日噜噜夜夜狠狠视频欧美人| 精品国产乱码久久久久久免费 | 久久99精品国产麻豆不卡| 久久久精品免费免费| 色999日韩国产欧美一区二区| 全国精品久久少妇| 国产精品电影一区二区| 欧美美女一区二区| 国产成人一区二区精品非洲| 一区二区三区久久久| 精品理论电影在线观看| 91免费视频网址| 老色鬼精品视频在线观看播放| 亚洲天堂中文字幕| 精品美女被调教视频大全网站| 一本到三区不卡视频| 极品少妇一区二区三区精品视频 | 国产91综合网| 亚洲线精品一区二区三区| 久久婷婷国产综合精品青草| 在线看日韩精品电影| 亚洲精品一二三| 26uuu另类欧美| 欧美性生活久久| www.色综合.com| 精品一区二区免费视频| 亚洲自拍偷拍av| 国产精品亲子乱子伦xxxx裸| 欧美精品丝袜久久久中文字幕| 成人a区在线观看| 久久精品噜噜噜成人88aⅴ| 一区二区三区欧美在线观看| 久久色在线观看| 欧美白人最猛性xxxxx69交| 在线一区二区观看|