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

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

?? console.c

?? minix3.1.1源代碼
?? C
?? 第 1 頁 / 共 3 頁
字號:
  }}/*===========================================================================* *				stop_beep				     * *===========================================================================*/PRIVATE void stop_beep(tmrp)timer_t *tmrp;{/* Turn off the beeper by turning off bits 0 and 1 in PORT_B. */  int port_b_val;  if (sys_inb(PORT_B, &port_b_val)==OK && 	sys_outb(PORT_B, (port_b_val & ~3))==OK)		beeping = FALSE;}/*===========================================================================* *				scr_init				     * *===========================================================================*/PUBLIC void scr_init(tp)tty_t *tp;{/* Initialize the screen driver. */  console_t *cons;  phys_bytes vid_base;  u16_t bios_columns, bios_crtbase, bios_fontlines;  u8_t bios_rows;  int line;  int s;  static int vdu_initialized = 0;  unsigned page_size;  /* Associate console and TTY. */  line = tp - &tty_table[0];  if (line >= nr_cons) return;  cons = &cons_table[line];  cons->c_tty = tp;  tp->tty_priv = cons;  /* Initialize the keyboard driver. */  kb_init(tp);  /* Fill in TTY function hooks. */  tp->tty_devwrite = cons_write;  tp->tty_echo = cons_echo;  tp->tty_ioctl = cons_ioctl;  /* Get the BIOS parameters that describe the VDU. */  if (! vdu_initialized++) {	/* How about error checking? What to do on failure??? */  	s=sys_vircopy(SELF, BIOS_SEG, (vir_bytes) VDU_SCREEN_COLS_ADDR,  		SELF, D, (vir_bytes) &bios_columns, VDU_SCREEN_COLS_SIZE);  	s=sys_vircopy(SELF, BIOS_SEG, (vir_bytes) VDU_CRT_BASE_ADDR,   		SELF, D, (vir_bytes) &bios_crtbase, VDU_CRT_BASE_SIZE);  	s=sys_vircopy(SELF, BIOS_SEG, (vir_bytes) VDU_SCREEN_ROWS_ADDR,   		SELF, D, (vir_bytes) &bios_rows, VDU_SCREEN_ROWS_SIZE);  	s=sys_vircopy(SELF, BIOS_SEG, (vir_bytes) VDU_FONTLINES_ADDR,   		SELF, D, (vir_bytes) &bios_fontlines, VDU_FONTLINES_SIZE);  	vid_port = bios_crtbase;  	scr_width = bios_columns;  	font_lines = bios_fontlines;  	scr_lines = machine.vdu_ega ? bios_rows+1 : 25;  	if (color) {		vid_base = COLOR_BASE;		vid_size = COLOR_SIZE;  	} else {		vid_base = MONO_BASE;		vid_size = MONO_SIZE;  	}  	if (machine.vdu_ega) vid_size = EGA_SIZE;  	wrap = ! machine.vdu_ega;  	s = sys_segctl(&vid_index, &vid_seg, &vid_off, vid_base, vid_size);  	vid_size >>= 1;		/* word count */  	vid_mask = vid_size - 1;  	/* Size of the screen (number of displayed characters.) */  	scr_size = scr_lines * scr_width;  	/* There can be as many consoles as video memory allows. */  	nr_cons = vid_size / scr_size;  	if (nr_cons > NR_CONS) nr_cons = NR_CONS;  	if (nr_cons > 1) wrap = 0;  	page_size = vid_size / nr_cons;  }  cons->c_start = line * page_size;  cons->c_limit = cons->c_start + page_size;  cons->c_cur = cons->c_org = cons->c_start;  cons->c_attr = cons->c_blank = BLANK_COLOR;  if (line != 0) {        /* Clear the non-console vtys. */  	blank_color = BLANK_COLOR;	mem_vid_copy(BLANK_MEM, cons->c_start, scr_size);  } else {	int i, n;	/* Set the cursor of the console vty at the bottom. c_cur	 * is updated automatically later.	 */	scroll_screen(cons, SCROLL_UP);	cons->c_row = scr_lines - 1;	cons->c_column = 0;  }  select_console(0);  cons_ioctl(tp, 0);}/*===========================================================================* *				kputc					     * *===========================================================================*/PUBLIC void kputc(c)int c;{#if 0	cons_putk(c);#else/* Accumulate a single character for a kernel message. Send a notification * the to output driver if an END_OF_KMESS is encountered.  */  if (c != 0) {      kmess.km_buf[kmess.km_next] = c;	/* put normal char in buffer */      if (kmess.km_size < KMESS_BUF_SIZE)          kmess.km_size += 1;		      kmess.km_next = (kmess.km_next + 1) % KMESS_BUF_SIZE;  } else {      notify(LOG_PROC_NR);  }#endif}/*===========================================================================* *				do_new_kmess				     * *===========================================================================*/PUBLIC void do_new_kmess(m)message *m;{/* Notification for a new kernel message. */  struct kmessages kmess;			/* kmessages structure */  static int prev_next = 0;			/* previous next seen */  int size, next;  int bytes;  int r;  /* Try to get a fresh copy of the buffer with kernel messages. */#if DEAD_CODE	  /* During shutdown, the reply is garbled because new notifications arrive   * while the system task makes a copy of the kernel messages buffer.   * Hence, don't check the return value.    */  if ((r=sys_getkmessages(&kmess)) != OK) {  	printf("TTY: couldn't get copy of kmessages: %d, 0x%x\n", r,r);  	return;  }#endif  sys_getkmessages(&kmess);  /* Print only the new part. Determine how many new bytes there are with    * help of the current and previous 'next' index. Note that the kernel   * buffer is circular. This works fine if less then KMESS_BUF_SIZE bytes   * is new data; else we miss % KMESS_BUF_SIZE here.     * Check for size being positive, the buffer might as well be emptied!   */  if (kmess.km_size > 0) {      bytes = ((kmess.km_next + KMESS_BUF_SIZE) - prev_next) % KMESS_BUF_SIZE;      r=prev_next;				/* start at previous old */       while (bytes > 0) {			          cons_putk( kmess.km_buf[(r%KMESS_BUF_SIZE)] );          bytes --;          r ++;      }      cons_putk(0);			/* terminate to flush output */  }  /* Almost done, store 'next' so that we can determine what part of the   * kernel messages buffer to print next time a notification arrives.   */  prev_next = kmess.km_next;}/*===========================================================================* *				do_diagnostics				     * *===========================================================================*/PUBLIC void do_diagnostics(m_ptr)message *m_ptr;			/* pointer to request message */{/* Print a string for a server. */  char c;  vir_bytes src;  int count;  int result = OK;  int proc_nr = m_ptr->DIAG_PROC_NR;  if (proc_nr == SELF) proc_nr = m_ptr->m_source;  src = (vir_bytes) m_ptr->DIAG_PRINT_BUF;  for (count = m_ptr->DIAG_BUF_COUNT; count > 0; count--) {	if (sys_vircopy(proc_nr, D, src++, SELF, D, (vir_bytes) &c, 1) != OK) {		result = EFAULT;		break;	}	cons_putk(c);  }  cons_putk(0);			/* always terminate, even with EFAULT */  m_ptr->m_type = result;  send(m_ptr->m_source, m_ptr);}/*===========================================================================* *				do_get_kmess				     * *===========================================================================*/PUBLIC void do_get_kmess(m_ptr)message *m_ptr;			/* pointer to request message */{/* Provide the log device with debug output */  vir_bytes dst;  int r;  dst = (vir_bytes) m_ptr->GETKM_PTR;  r= OK;  if (sys_vircopy(SELF, D, (vir_bytes)&kmess, m_ptr->m_source, D,	dst, sizeof(kmess)) != OK) {	r = EFAULT;  }  m_ptr->m_type = r;  send(m_ptr->m_source, m_ptr);}/*===========================================================================* *				cons_putk				     * *===========================================================================*/PRIVATE void cons_putk(c)int c;				/* character to print */{/* This procedure is used to print a character on the console. */  if (c != 0) {	if (c == '\n') cons_putk('\r');	out_char(&cons_table[0], (int) c);  } else {	flush(&cons_table[0]);  }}/*===========================================================================* *				toggle_scroll				     * *===========================================================================*/PUBLIC void toggle_scroll(){/* Toggle between hardware and software scroll. */  cons_org0();  softscroll = !softscroll;  printf("%sware scrolling enabled.\n", softscroll ? "Soft" : "Hard");}/*===========================================================================* *				cons_stop				     * *===========================================================================*/PUBLIC void cons_stop(){/* Prepare for halt or reboot. */  cons_org0();  softscroll = 1;  select_console(0);  cons_table[0].c_attr = cons_table[0].c_blank = BLANK_COLOR;}/*===========================================================================* *				cons_org0				     * *===========================================================================*/PRIVATE void cons_org0(){/* Scroll video memory back to put the origin at 0. */  int cons_line;  console_t *cons;  unsigned n;  for (cons_line = 0; cons_line < nr_cons; cons_line++) {	cons = &cons_table[cons_line];	while (cons->c_org > cons->c_start) {		n = vid_size - scr_size;	/* amount of unused memory */		if (n > cons->c_org - cons->c_start)			n = cons->c_org - cons->c_start;		vid_vid_copy(cons->c_org, cons->c_org - n, scr_size);		cons->c_org -= n;	}	flush(cons);  }  select_console(ccurrent);}/*===========================================================================* *				select_console				     * *===========================================================================*/PUBLIC void select_console(int cons_line){/* Set the current console to console number 'cons_line'. */  if (cons_line < 0 || cons_line >= nr_cons) return;  ccurrent = cons_line;  curcons = &cons_table[cons_line];  set_6845(VID_ORG, curcons->c_org);  set_6845(CURSOR, curcons->c_cur);}/*===========================================================================* *				con_loadfont				     * *===========================================================================*/PUBLIC int con_loadfont(m)message *m;{/* Load a font into the EGA or VGA adapter. */  int result;  static struct sequence seq1[7] = {	{ GA_SEQUENCER_INDEX, 0x00, 0x01 },	{ GA_SEQUENCER_INDEX, 0x02, 0x04 },	{ GA_SEQUENCER_INDEX, 0x04, 0x07 },	{ GA_SEQUENCER_INDEX, 0x00, 0x03 },	{ GA_GRAPHICS_INDEX, 0x04, 0x02 },	{ GA_GRAPHICS_INDEX, 0x05, 0x00 },	{ GA_GRAPHICS_INDEX, 0x06, 0x00 },  };  static struct sequence seq2[7] = {	{ GA_SEQUENCER_INDEX, 0x00, 0x01 },	{ GA_SEQUENCER_INDEX, 0x02, 0x03 },	{ GA_SEQUENCER_INDEX, 0x04, 0x03 },	{ GA_SEQUENCER_INDEX, 0x00, 0x03 },	{ GA_GRAPHICS_INDEX, 0x04, 0x00 },	{ GA_GRAPHICS_INDEX, 0x05, 0x10 },	{ GA_GRAPHICS_INDEX, 0x06,    0 },  };  seq2[6].value= color ? 0x0E : 0x0A;  if (!machine.vdu_ega) return(ENOTTY);  result = ga_program(seq1);	/* bring font memory into view */  result = sys_physcopy(m->PROC_NR, D, (vir_bytes) m->ADDRESS,   	NONE, PHYS_SEG, (phys_bytes) GA_VIDEO_ADDRESS, (phys_bytes)GA_FONT_SIZE);  result = ga_program(seq2);	/* restore */  return(result);}/*===========================================================================* *				ga_program				     * *===========================================================================*/PRIVATE int ga_program(seq)struct sequence *seq;{  pvb_pair_t char_out[14];  int i;  for (i=0; i<7; i++) {      pv_set(char_out[2*i], seq->index, seq->port);      pv_set(char_out[2*i+1], seq->index+1, seq->value);      seq++;  }   return sys_voutb(char_out, 14);}/*===========================================================================* *				cons_ioctl				     * *===========================================================================*/PRIVATE int cons_ioctl(tp, try)tty_t *tp;int try;{/* Set the screen dimensions. */  tp->tty_winsize.ws_row= scr_lines;  tp->tty_winsize.ws_col= scr_width;  tp->tty_winsize.ws_xpixel= scr_width * 8;  tp->tty_winsize.ws_ypixel= scr_lines * font_lines;}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
jizz一区二区| 国产人成一区二区三区影院| 欧美精品1区2区3区| 91精品国产色综合久久| 日韩欧美国产系列| 国产欧美一区二区三区在线看蜜臀 | 国产乱对白刺激视频不卡| 成人av在线播放网址| 在线欧美小视频| 日韩亚洲欧美成人一区| 国产日产欧产精品推荐色| 亚洲视频精选在线| 免播放器亚洲一区| 成人免费黄色在线| 精品视频1区2区3区| 久久久久一区二区三区四区| 亚洲男同1069视频| 麻豆精品视频在线观看| 成人精品国产一区二区4080| 在线电影国产精品| 日本一区二区电影| 日日嗨av一区二区三区四区| 国产精品一区二区久久不卡 | 国产精品灌醉下药二区| 亚洲国产三级在线| 高清beeg欧美| 欧美军同video69gay| 国产丝袜美腿一区二区三区| 亚洲综合色噜噜狠狠| 国产自产2019最新不卡| 欧美在线视频日韩| 国产日本欧美一区二区| 爽爽淫人综合网网站| 不卡的av在线播放| 26uuu亚洲婷婷狠狠天堂| 樱花草国产18久久久久| 国产成人在线影院| 7777精品伊人久久久大香线蕉完整版 | 538在线一区二区精品国产| 日本一区二区动态图| 蜜臀av一级做a爰片久久| 99久久99久久综合| 精品欧美乱码久久久久久| 亚洲美女屁股眼交| 国产成人精品网址| 欧美一级国产精品| 一区二区三区在线不卡| 国产精品538一区二区在线| 欧美日韩国产一级二级| 亚洲三级免费电影| 国产成人精品亚洲日本在线桃色| 制服丝袜亚洲精品中文字幕| 亚洲乱码国产乱码精品精可以看 | 色婷婷狠狠综合| 国产精品青草久久| 国产一区亚洲一区| 欧美电视剧免费观看| 亚洲国产综合视频在线观看| 99精品热视频| 中文字幕成人av| 国产精品羞羞答答xxdd| 精品国产免费一区二区三区四区 | 欧美剧情片在线观看| 亚洲激情一二三区| 99久久99久久久精品齐齐| 国产日韩欧美精品综合| 国产美女一区二区三区| 日韩美女在线视频| 日本最新不卡在线| 欧美色图免费看| 亚洲成人综合在线| 精品视频一区三区九区| 亚洲免费在线观看视频| 91在线观看一区二区| 日本一区二区三区在线观看| 国产呦萝稀缺另类资源| 精品国产伦一区二区三区免费| 秋霞电影一区二区| 日韩欧美一区二区视频| 久久精品国产99国产| 日韩美女视频在线| 久久成人久久鬼色| wwww国产精品欧美| 国产一区二区视频在线| 久久综合久久99| 国产寡妇亲子伦一区二区| 国产亚洲欧美在线| 99精品久久免费看蜜臀剧情介绍| 国产精品电影一区二区| 99精品国产一区二区三区不卡| 亚洲丝袜精品丝袜在线| 欧美在线观看一区| 日韩精品1区2区3区| 精品国产三级电影在线观看| 国产经典欧美精品| 国产精品久久久久aaaa| 91美女在线视频| 亚洲二区在线观看| 日韩一区二区三区视频在线 | 国产亚洲一区二区三区| 成人精品电影在线观看| 一区二区三区高清不卡| 91麻豆精品91久久久久同性| 九九在线精品视频| 国产精品全国免费观看高清 | 亚洲欧洲无码一区二区三区| 一本大道久久a久久精二百| 亚洲香肠在线观看| 精品日韩欧美在线| 成人国产精品免费观看动漫| 一区二区免费视频| 日韩手机在线导航| 国产精品影音先锋| 亚洲老妇xxxxxx| 欧美三级乱人伦电影| 日韩成人午夜电影| 中文字幕欧美激情| 欧美日韩精品一区二区三区四区 | 久久一留热品黄| a美女胸又www黄视频久久| 亚洲精品视频免费看| 欧美一区欧美二区| 99久久精品免费观看| 午夜精品一区二区三区免费视频| 精品sm在线观看| 91国偷自产一区二区使用方法| 日本va欧美va精品| 亚洲色图另类专区| 精品成人私密视频| 欧美亚洲综合色| 国产一区二区日韩精品| 亚洲另类色综合网站| 精品国产一区二区精华| 在线视频国产一区| 国产精品资源在线| 日韩av高清在线观看| 18成人在线观看| 精品日韩99亚洲| 91福利视频在线| 国产91精品精华液一区二区三区| 亚洲一区二区三区四区五区中文| 久久在线观看免费| 欧美伊人久久大香线蕉综合69 | 亚洲精品一区二区在线观看| 色婷婷av一区| 成人综合婷婷国产精品久久蜜臀 | 欧美日韩久久久久久| 国产不卡在线播放| 日本成人在线视频网站| 亚洲视频在线观看三级| 久久久久国产精品厨房| 欧美日韩成人一区| 91丨国产丨九色丨pron| 国产一区二区导航在线播放| 视频一区二区三区中文字幕| 国产精品免费视频一区| 日韩欧美色综合网站| 欧美午夜精品电影| 91亚洲精品乱码久久久久久蜜桃| 九九九久久久精品| 男人的j进女人的j一区| 天堂久久一区二区三区| 亚洲精品亚洲人成人网| 国产精品午夜在线观看| 久久久噜噜噜久久人人看| 日韩欧美在线网站| 欧美精品v国产精品v日韩精品| 91在线高清观看| 9久草视频在线视频精品| 国产高清视频一区| 老汉av免费一区二区三区| 丝瓜av网站精品一区二区| 一区二区三区欧美日| 亚洲欧洲综合另类| 亚洲视频在线观看一区| 国产精品欧美综合在线| 中文字幕第一区二区| 欧美韩国日本一区| 中文字幕国产精品一区二区| 国产午夜精品福利| 久久久久久影视| 久久综合视频网| 欧美精品一区二| 久久一夜天堂av一区二区三区| 日韩一区二区三区高清免费看看| 91麻豆精品国产91久久久更新时间| 欧美日韩在线直播| 欧美电影影音先锋| 911精品产国品一二三产区| 欧美日本在线观看| 欧美精品色综合| 91精品免费观看| 日韩一区二区在线观看| 日韩欧美在线综合网| 精品三级av在线| 久久久亚洲午夜电影| 国产女人aaa级久久久级| 日本一区二区三区免费乱视频| 久久久精品国产99久久精品芒果| 中文字幕成人网|