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

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

?? console.c.bak

?? LINUX 0.11版內核代碼。 并有代碼分析說明。
?? BAK
?? 第 1 頁 / 共 3 頁
字號:
// 若當前光標處在行末端或末端以外,則將光標移到下行頭列。并調整光標位置對應的內存指針pos。	    if (x >= video_num_columns)		{		  x -= video_num_columns;		  pos -= video_size_row;		  lf ();		}// 將字符c 寫到顯示內存中pos 處,并將光標右移1 列,同時也將pos 對應地移動2 個字節。//__asm__ ("movb _attr,%%ah\n\t" "movw %%ax,%1\n\t"::"a" (c), "m" (*(short *) pos):"ax");
		_asm {
			mov al,c;
			mov ah,attr;
			mov ebx,pos
			mov [ebx],ax;
		}
	    pos += 2;	    x++;// 如果字符c 是轉義字符ESC,則轉換狀態state 到1。	  }	  else if (c == 27)	    state = 1;// 如果字符c 是換行符(10),或是垂直制表符VT(11),或者是換頁符FF(12),則移動光標到下一行。	  else if (c == 10 || c == 11 || c == 12)	    lf ();// 如果字符c 是回車符CR(13),則將光標移動到頭列(0 列)。	  else if (c == 13)	    cr ();// 如果字符c 是DEL(127),則將光標右邊一字符擦除(用空格字符替代),并將光標移到被擦除位置。	  else if (c == ERASE_CHAR (tty))	    del ();// 如果字符c 是BS(backspace,8),則將光標右移1 格,并相應調整光標對應內存位置指針pos。	  else if (c == 8)	  {	      if (x)		{		  x--;		  pos -= 2;		}// 如果字符c 是水平制表符TAB(9),則將光標移到8 的倍數列上。若此時光標列數超出屏幕最大列數,// 則將光標移到下一行上。	  }	  else if (c == 9)	  {	    c = (char)(8 - (x & 7));	    x += c;	    pos += c << 1;	    if (x > video_num_columns)		{		  x -= video_num_columns;		  pos -= video_size_row;		  lf ();		}	    c = 9;// 如果字符c 是響鈴符BEL(7),則調用蜂鳴函數,是揚聲器發聲。	  }	  else if (c == 7)	    sysbeep ();	  break;// 如果原狀態是0,并且字符是轉義字符ESC(0x1b = 033 = 27),則轉到狀態1 處理。	case 1:	  state = 0;// 如果字符c 是'[',則將狀態state 轉到2。	  if (c == '[')	    state = 2;// 如果字符c 是'E',則光標移到下一行開始處(0 列)。	  else if (c == 'E')	    gotoxy (0, y + 1);// 如果字符c 是'M',則光標上移一行。	  else if (c == 'M')	    ri ();// 如果字符c 是'D',則光標下移一行。	  else if (c == 'D')	    lf ();// 如果字符c 是'Z',則發送終端應答字符序列。	  else if (c == 'Z')	    respond (tty);// 如果字符c 是'7',則保存當前光標位置。注意這里代碼寫錯!應該是(c=='7')。	  else if (x == '7')	    save_cur ();// 如果字符c 是'8',則恢復到原保存的光標位置。注意這里代碼寫錯!應該是(c=='8')。	  else if (x == '8')	    restore_cur ();	  break;// 如果原狀態是1,并且上一字符是'[',則轉到狀態2 來處理。	case 2:// 首先對ESC 轉義字符序列參數使用的處理數組par[]清零,索引變量npar 指向首項,并且設置狀態// 為3。若此時字符不是'?',則直接轉到狀態3 去處理,否則去讀一字符,再到狀態3 處理代碼處。	  for (npar = 0; npar < NPAR; npar++)	    par[npar] = 0;	  npar = 0;	  state = 3;	  if (ques = (c == '?'))	    break;// 如果原來是狀態2;或者原來就是狀態3,但原字符是';'或數字,則在下面處理。	case 3:// 如果字符c 是分號';',并且數組par 未滿,則索引值加1。	  if (c == ';' && npar < NPAR - 1)	    {	      npar++;	      break;// 如果字符c 是數字字符'0'-'9',則將該字符轉換成數值并與npar 所索引的項組成10 進制數。	    }	  else if (c >= '0' && c <= '9')	    {	      par[npar] = 10 * par[npar] + c - '0';	      break;// 否則轉到狀態4。	    }	  else	    state = 4;// 如果原狀態是狀態3,并且字符不是';'或數字,則轉到狀態4 處理。首先復位狀態state=0。	case 4:	  state = 0;	  switch (c)	    {// 如果字符c 是'G'或'`',則par[]中第一個參數代表列號。若列號不為零,則將光標右移一格。	    case 'G':	    case '`':	      if (par[0])		par[0]--;	      gotoxy (par[0], y);	      break;// 如果字符c 是'A',則第一個參數代表光標上移的行數。若參數為0 則上移一行。	    case 'A':	      if (!par[0])		par[0]++;	      gotoxy (x, y - par[0]);	      break;// 如果字符c 是'B'或'e',則第一個參數代表光標下移的行數。若參數為0 則下移一行。	    case 'B':	    case 'e':	      if (!par[0])		par[0]++;	      gotoxy (x, y + par[0]);	      break;// 如果字符c 是'C'或'a',則第一個參數代表光標右移的格數。若參數為0 則右移一格。	    case 'C':	    case 'a':	      if (!par[0])		par[0]++;	      gotoxy (x + par[0], y);	      break;// 如果字符c 是'D',則第一個參數代表光標左移的格數。若參數為0 則左移一格。	    case 'D':	      if (!par[0])		par[0]++;	      gotoxy (x - par[0], y);	      break;// 如果字符c 是'E',則第一個參數代表光標向下移動的行數,并回到0 列。若參數為0 則下移一行。	    case 'E':	      if (!par[0])		par[0]++;	      gotoxy (0, y + par[0]);	      break;// 如果字符c 是'F',則第一個參數代表光標向上移動的行數,并回到0 列。若參數為0 則上移一行。	    case 'F':	      if (!par[0])		par[0]++;	      gotoxy (0, y - par[0]);	      break;// 如果字符c 是'd',則第一個參數代表光標所需在的行號(從0 計數)。	    case 'd':	      if (par[0])		par[0]--;	      gotoxy (x, par[0]);	      break;// 如果字符c 是'H'或'f',則第一個參數代表光標移到的行號,第二個參數代表光標移到的列號。	    case 'H':	    case 'f':	      if (par[0])		par[0]--;	      if (par[1])		par[1]--;	      gotoxy (par[1], par[0]);	      break;// 如果字符c 是'J',則第一個參數代表以光標所處位置清屏的方式:// ANSI 轉義序列:'ESC [sJ'(s = 0 刪除光標到屏幕底端;1 刪除屏幕開始到光標處;2 整屏刪除)。	    case 'J':	      csi_J (par[0]);	      break;// 如果字符c 是'K',則第一個參數代表以光標所在位置對行中字符進行刪除處理的方式。// ANSI 轉義字符序列:'ESC [sK'(s = 0 刪除到行尾;1 從開始刪除;2 整行都刪除)。	    case 'K':	      csi_K (par[0]);	      break;// 如果字符c 是'L',表示在光標位置處插入n 行(ANSI 轉義字符序列'ESC [nL')。	    case 'L':	      csi_L (par[0]);	      break;// 如果字符c 是'M',表示在光標位置處刪除n 行(ANSI 轉義字符序列'ESC [nM')。	    case 'M':	      csi_M (par[0]);	      break;// 如果字符c 是'P',表示在光標位置處刪除n 個字符(ANSI 轉義字符序列'ESC [nP')。	    case 'P':	      csi_P (par[0]);	      break;// 如果字符c 是'@',表示在光標位置處插入n 個字符(ANSI 轉義字符序列'ESC [n@')。	    case '@':	      csi_at (par[0]);	      break;// 如果字符c 是'm',表示改變光標處字符的顯示屬性,比如加粗、加下劃線、閃爍、反顯等。// ANSI 轉義字符序列:'ESC [nm'。n = 0 正常顯示;1 加粗;4 加下劃線;7 反顯;27 正常顯示。	    case 'm':	      csi_m ();	      break;// 如果字符c 是'r',則表示用兩個參數設置滾屏的起始行號和終止行號。	    case 'r':	      if (par[0])		par[0]--;	      if (!par[1])		par[1] = video_num_lines;	      if (par[0] < par[1] && par[1] <= video_num_lines)		{		  top = par[0];		  bottom = par[1];		}	      break;// 如果字符c 是's',則表示保存當前光標所在位置。	    case 's':	      save_cur ();	      break;// 如果字符c 是'u',則表示恢復光標到原保存的位置處。	    case 'u':	      restore_cur ();	      break;	    }	}    }// 最后根據上面設置的光標位置,向顯示控制器發送光標顯示位置。  set_cursor ();}/** void con_init(void);* 這個子程序初始化控制臺中斷,其它什么都不做。如果你想讓屏幕干凈的話,就使用* 適當的轉義字符序列調用tty_write()函數。** 讀取setup.s 程序保存的信息,用以確定當前顯示器類型,并且設置所有相關參數。*/voidcon_init (void){  register unsigned char a;  char *display_desc = "????";  char *display_ptr;  video_num_columns = ORIG_VIDEO_COLS;	// 顯示器顯示字符列數。  video_size_row = video_num_columns * 2;	// 每行需使用字節數。  video_num_lines = ORIG_VIDEO_LINES;	// 顯示器顯示字符行數。  video_page = (unsigned char)ORIG_VIDEO_PAGE;	// 當前顯示頁面。  video_erase_char = 0x0720;	// 擦除字符(0x20 顯示字符, 0x07 是屬性)。// 如果原始顯示模式等于7,則表示是單色顯示器。  if (ORIG_VIDEO_MODE == 7)	/* Is this a monochrome display? */  {      video_mem_start = 0xb0000;	// 設置單顯映象內存起始地址。      video_port_reg = 0x3b4;	// 設置單顯索引寄存器端口。      video_port_val = 0x3b5;	// 設置單顯數據寄存器端口。// 根據BIOS 中斷int 0x10 功能0x12 獲得的顯示模式信息,判斷顯示卡單色顯示卡還是彩色顯示卡。// 如果使用上述中斷功能所得到的BX 寄存器返回值不等于0x10,則說明是EGA 卡。因此初始// 顯示類型為EGA 單色;所使用映象內存末端地址為0xb8000;并置顯示器描述字符串為'EGAm'。// 在系統初始化期間顯示器描述字符串將顯示在屏幕的右上角。      if ((ORIG_VIDEO_EGA_BX & 0xff) != 0x10)	  {	    video_type = VIDEO_TYPE_EGAM;	// 設置顯示類型(EGA 單色)。	    video_mem_end = 0xb8000;	// 設置顯示內存末端地址。	    display_desc = "EGAm";	// 設置顯示描述字符串。	  }// 如果BX 寄存器的值等于0x10,則說明是單色顯示卡MDA。則設置相應參數。      else	  {	    video_type = VIDEO_TYPE_MDA;	// 設置顯示類型(MDA 單色)。	    video_mem_end = 0xb2000;	// 設置顯示內存末端地址。	    display_desc = "*MDA";	// 設置顯示描述字符串。	  }  }// 如果顯示模式不為7,則為彩色模式。此時所用的顯示內存起始地址為0xb800;顯示控制索引寄存// 器端口地址為0x3d4;數據寄存器端口地址為0x3d5。  else				/* If not, it is color. */  {      video_mem_start = 0xb8000;	// 顯示內存起始地址。      video_port_reg = 0x3d4;	// 設置彩色顯示索引寄存器端口。      video_port_val = 0x3d5;	// 設置彩色顯示數據寄存器端口。// 再判斷顯示卡類別。如果BX 不等于0x10,則說明是EGA 顯示卡。      if ((ORIG_VIDEO_EGA_BX & 0xff) != 0x10)	  {	    video_type = VIDEO_TYPE_EGAC;	// 設置顯示類型(EGA 彩色)。	    video_mem_end = 0xbc000;	// 設置顯示內存末端地址。	    display_desc = "EGAc";	// 設置顯示描述字符串。	  }// 如果BX 寄存器的值等于0x10,則說明是CGA 顯示卡。則設置相應參數。      else	  {	    video_type = VIDEO_TYPE_CGA;	// 設置顯示類型(CGA)。	    video_mem_end = 0xba000;	// 設置顯示內存末端地址。	    display_desc = "*CGA";	// 設置顯示描述字符串。	  }  }/* Let the user known what kind of display driver we are using *//* 讓用戶知道我們正在使用哪一類顯示驅動程序 */// 在屏幕的右上角顯示顯示描述字符串。采用的方法是直接將字符串寫到顯示內存的相應位置處。// 首先將顯示指針display_ptr 指到屏幕第一行右端差4 個字符處(每個字符需2 個字節,因此減8)。  display_ptr = ((char *) video_mem_start) + video_size_row - 8;// 然后循環復制字符串中的字符,并且每復制一個字符都空開一個屬性字節。  while (*display_desc)  {      *display_ptr++ = *display_desc++;	// 復制字符。      display_ptr++;		// 空開屬性字節位置。  }/* Initialize the variables used for scrolling (mostly EGA/VGA) *//* 初始化用于滾屏的變量(主要用于EGA/VGA) */  origin = video_mem_start;	// 滾屏起始顯示內存地址。  scr_end = video_mem_start + video_num_lines * video_size_row;	// 滾屏結束內存地址。  top = 0;			// 最頂行號。  bottom = video_num_lines;	// 最底行號。  gotoxy (ORIG_X, ORIG_Y);	// 初始化光標位置x,y 和對應的內存位置pos。  set_trap_gate (0x21, &keyboard_interrupt);	// 設置鍵盤中斷陷阱門。  outb_p ((unsigned char)(inb_p (0x21) & 0xfd), 0x21);	// 取消8259A 中對鍵盤中斷的屏蔽,允許IRQ1。  a = inb_p (0x61);		// 延遲讀取鍵盤端口0x61(8255A 端口PB)。  outb_p ((unsigned char)(a | 0x80), 0x61);	// 設置禁止鍵盤工作(位7 置位),  outb (a, 0x61);		// 再允許鍵盤工作,用以復位鍵盤操作。}/* from bsd-net-2: *///// 停止蜂鳴。// 復位8255A PB 端口的位1 和位0。voidsysbeepstop (void){/* disable counter 2 *//* 禁止定時器2 */  outb ((unsigned char)(inb_p (0x61) & 0xFC), 0x61);}int beepcount = 0;// 開通蜂鳴。// 8255A 芯片PB 端口的位1 用作揚聲器的開門信號;位0 用作8253 定時器2 的門信號,該定時器的// 輸出脈沖送往揚聲器,作為揚聲器發聲的頻率。因此要使揚聲器蜂鳴,需要兩步:首先開啟PB 端口// 位1 和位0(置位),然后設置定時器發送一定的定時頻率即可。static voidsysbeep (void){/* enable counter 2 *//* 開啟定時器2 */  outb_p ((unsigned char)(inb_p (0x61) | 3), 0x61);/* set command for counter 2, 2 byte write *//* 送設置定時器2 命令 */  outb_p (0xB6, 0x43);/* send 0x637 for 750 HZ *//* 設置頻率為750HZ,因此送定時值0x637 */  outb_p (0x37, 0x42);  outb (0x06, 0x42);/* 1/8 second *//* 蜂鳴時間為1/8 秒 */  beepcount = HZ / 8;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久蜜臀中文字幕| 精品捆绑美女sm三区| 国产女人18水真多18精品一级做 | 日本高清不卡在线观看| 成人免费在线视频| 欧美日韩国产美女| 激情综合五月婷婷| 国产精品久久毛片a| 欧美日韩视频在线观看一区二区三区| 亚洲免费观看高清完整版在线观看熊| 91美女片黄在线| 日韩国产欧美在线播放| 精品国产三级电影在线观看| 成人午夜视频免费看| 亚洲图片有声小说| 国产精品拍天天在线| 欧美日韩高清一区二区| 成人免费看视频| 久久激情五月婷婷| 亚洲大型综合色站| 中文字幕在线视频一区| 欧美亚洲尤物久久| 亚洲1区2区3区视频| 欧美国产精品v| 国产网站一区二区| 制服丝袜亚洲网站| 欧美午夜宅男影院| av电影在线观看完整版一区二区| 老汉av免费一区二区三区 | 国产欧美一区二区精品仙草咪| 欧美日韩免费一区二区三区视频| 99久久免费国产| 国产成人免费视频网站 | 一区二区三区欧美在线观看| 国产精品网站在线| 国产精品亲子乱子伦xxxx裸| 国产视频视频一区| 国产精品久久久久影院亚瑟| 国产日韩欧美在线一区| 亚洲欧美一区二区在线观看| 国产精品久久看| 亚洲人成小说网站色在线| 国产精品妹子av| 一区二区三区四区亚洲| 亚洲一区二区欧美日韩| 日韩电影在线观看电影| 久久电影网站中文字幕| 国产精品911| 欧美影院午夜播放| 日韩欧美一区二区免费| 国产精品三级视频| 亚洲国产视频a| 国产精品影视网| 日本久久一区二区三区| 欧美亚洲禁片免费| 国产精品久久久久三级| 午夜精品国产更新| 白白色 亚洲乱淫| 久久精品国产亚洲5555| 日本午夜精品视频在线观看| 粉嫩av一区二区三区在线播放| 色94色欧美sute亚洲线路二 | av电影在线观看不卡| 欧美一区二区三区思思人| 国产精品伦理在线| 韩国精品主播一区二区在线观看| 色婷婷av一区二区三区之一色屋| 精品国产乱码久久久久久浪潮 | 久久九九99视频| 美女久久久精品| 91超碰这里只有精品国产| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆 | 久久色.com| 日本强好片久久久久久aaa| 91搞黄在线观看| 亚洲激情av在线| 色94色欧美sute亚洲13| 玉足女爽爽91| 在线电影一区二区三区| 日日噜噜夜夜狠狠视频欧美人| www.日韩在线| 亚洲人成在线观看一区二区| 在线观看视频一区二区欧美日韩| 亚洲日本一区二区| 在线观看欧美日本| 三级不卡在线观看| 91麻豆精品国产无毒不卡在线观看| 伊人性伊人情综合网| 91精选在线观看| 韩国女主播成人在线观看| 国产精品三级av| 制服丝袜国产精品| 粉嫩aⅴ一区二区三区四区| 亚洲激情自拍视频| 日韩欧美视频一区| 成人av第一页| 国产精品高潮呻吟久久| 国内偷窥港台综合视频在线播放| 国产欧美日韩精品一区| 欧美亚洲国产怡红院影院| 久久精品av麻豆的观看方式| 国产精品麻豆视频| 日韩精品中文字幕在线一区| 91网页版在线| 国产成人精品午夜视频免费 | 中文字幕在线免费不卡| 精品国产区一区| 欧美男人的天堂一二区| 成人精品小蝌蚪| av在线一区二区三区| 国内久久精品视频| 韩国在线一区二区| 丝袜美腿亚洲综合| 天堂久久一区二区三区| 亚洲综合激情小说| 午夜伊人狠狠久久| 亚洲第一精品在线| 午夜电影网亚洲视频| 亚洲123区在线观看| 亚洲成人综合在线| 日韩电影在线免费观看| 视频一区国产视频| 久久精品国产亚洲5555| 国产在线视视频有精品| 高潮精品一区videoshd| 99久久免费精品高清特色大片| 波多野结衣欧美| 日本韩国欧美在线| 日韩亚洲欧美在线| 日韩午夜av一区| 亚洲国产高清在线观看视频| 17c精品麻豆一区二区免费| 樱花草国产18久久久久| 午夜精品久久久久久久| 国产精品资源在线| 91在线视频官网| 日韩欧美视频在线| 亚洲欧洲另类国产综合| 香蕉加勒比综合久久| 激情综合色综合久久| 色婷婷亚洲精品| 国产午夜三级一区二区三| 一区二区三区在线视频观看58| 亚洲色图欧美偷拍| 亚洲色图另类专区| 激情综合色播五月| 欧美色中文字幕| 国产欧美久久久精品影院| 午夜久久久影院| 色婷婷激情久久| 日韩一区在线播放| 风间由美性色一区二区三区| 91精品国产高清一区二区三区蜜臀 | 一区二区三区不卡视频在线观看| 精品一区二区在线免费观看| 69av一区二区三区| 亚洲高清视频中文字幕| 欧洲一区二区av| 亚洲欧洲三级电影| 99国内精品久久| 亚洲色图在线播放| 99精品偷自拍| 一区二区免费看| 欧美日韩一区成人| 热久久国产精品| 26uuu久久天堂性欧美| 国产精品综合一区二区三区| 久久久久国产精品厨房| 不卡高清视频专区| 中文字幕亚洲一区二区av在线| 国产高清精品在线| 中文字幕在线不卡视频| 欧美撒尿777hd撒尿| 另类调教123区| 中文一区在线播放| 色先锋aa成人| 精品一区二区三区日韩| 中文字幕第一区第二区| 欧美日韩另类国产亚洲欧美一级| 热久久久久久久| 亚洲精品免费在线观看| 欧美日韩国产综合久久| 国产乱码精品一区二区三区av| 亚洲视频在线观看一区| 26uuu精品一区二区| 色八戒一区二区三区| 国产河南妇女毛片精品久久久| 伊人色综合久久天天| 国产精品久久久久aaaa| 欧美午夜精品理论片a级按摩| 久久99国产精品免费| 亚洲韩国精品一区| 中文字幕国产一区| 久久综合久久99| 欧美一级精品在线| 日本高清不卡aⅴ免费网站| 亚洲成人av在线电影| 一区二区三区精品在线| 亚洲激情在线播放| 亚洲欧美日韩国产另类专区|