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

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

?? ic.c

?? 操作系統源代碼
?? C
字號:
/*****************************************************************//*								 *//*	ic.c							 *//*								 *//*		The main loop of the "Integer Calculator". 	 *//*								 *//*****************************************************************//*  origination          1988-Apr-6   	    Terrence W. Holm 	 *//*  added Exec_Shell()   1988-Apr-11	    Terrence W. Holm 	 *//*  added "s+"		 1988-Apr-18	    Terrence W. Holm 	 *//*  added cmd line args  1988-May-13	    Terrence W. Holm 	 *//*  'i' also does 'o'	 1988-May-28	    Terrence W. Holm 	 *//*  if ~dec:unsigned *%/ 1988-Jul-10	    Terrence W. Holm 	 *//*****************************************************************/#include <sys/types.h>#include <sys/wait.h>#include <signal.h>#include <string.h>#include <stdlib.h>#include <unistd.h>#include <stdio.h>#include "ic.h"static char copyright[] = {"ic    (c) Terrence W. Holm 1988"};/****************************************************************//*							 *//*	main()						 *//*							 *//*		Initialize. Enter the main processing loop. *//*							 *//****************************************************************/int main(argc, argv)int argc;char *argv[];{  ic_state state;		/* This state record is passed to most procs */  Init_State(&state);  state.scratch_pad = (FILE *) NULL;	/* No 'w' command yet	 */  Init_Getc(argc, argv);	/* Refs to command line args	 */  if (Init_Termcap() == 0) {	fprintf(stderr, "ic requires a termcap entry\n");	exit(1);  }  Save_Term();			/* Save terminal characteristics */  if (signal(SIGINT, SIG_IGN) != SIG_IGN) {	signal(SIGINT, Sigint);	signal(SIGQUIT, Sigint);  }  Set_Term();			/* Setup terminal characteristics */  Draw_Screen(&state);  while (1) {	int rc = Process(&state, Get_Char());	if (rc == EOF) break;	if (rc == ERROR) putchar(BELL);  }  Reset_Term();			/* Restore terminal characteristics */  exit(OK);}/****************************************************************//*							 	*//*	Init_State()					 	*//*							 	*//*		Initialize the state record.		 	*//*							 	*//****************************************************************/void Init_State(s)ic_state *s;{  s->stack[0] = 0;  s->stack_size = 1;  s->register_mask = 0x000;  s->last_tos = 0;  s->mode = LAST_WAS_ENTER;  s->input_base = DECIMAL;  s->output_base = DECIMAL;}/*****************************************************************//*								 *//*	Sigint()						 *//*								 *//*		Terminate the program on an interrupt (^C) 	 *//*		or quit (^\) signal.			 	 *//*							 	 *//*****************************************************************/void Sigint(sig)int sig;{  Reset_Term();			/* Restore terminal characteristics */  exit(1);}/*****************************************************************//*								 *//*	Process( state, input_char )				 *//*								 *//*		Determine the function requested by the  	 *//*		input character. Returns OK, EOF or ERROR. 	 *//*							 	 *//******************************************************************/int Process(s, c)ic_state *s;int c;{  switch (c) {      case '0':      case '1':      case '2':      case '3':      case '4':      case '5':      case '6':      case '7':      case '8':      case '9':	return(Enter_Numeric(s, (int) c - '0'));      case 'a':      case 'b':      case 'c':      case 'd':      case 'e':      case 'f':	return(Enter_Numeric(s, (int) c - 'a' + 10));      case 'h':      case '?':			/* Help	*/	Draw_Help_Screen();	Get_Char();	Draw_Screen(s);	return(OK);      case 'i':			/* Set i/p and o/p base	 */	{		int numeral;		Draw_Prompt("Base?");		numeral = Get_Base(Get_Char());		Erase_Prompt();		if (numeral == ERROR || numeral == ASCII) return(ERROR);		s->input_base = numeral;		s->output_base = numeral;		s->mode = LAST_WAS_FUNCTION;		Draw_Screen(s);		return(OK);	}      case 'l':      case ESC_PGDN:		/* Get last tos value */	if (s->mode != LAST_WAS_ENTER) Push(s);	s->stack[0] = s->last_tos;	s->mode = LAST_WAS_FUNCTION;	Draw_Stack(s);	return(OK);      case 'm':			/* Invoke a Minix shell */	Reset_Term();	Exec_Shell();	Set_Term();	Draw_Screen(s);	return(OK);      case 'o':			/* Set output base */	{		int numeral;		Draw_Prompt("Base?");		numeral = Get_Base(Get_Char());		Erase_Prompt();		if (numeral == ERROR) return(ERROR);		s->output_base = numeral;		s->mode = LAST_WAS_FUNCTION;		Draw_Screen(s);		return(OK);	}      case 'p':      case ESC_DOWN:		/* Pop: Roll down stack */	{		long int temp = s->stack[0];		int i;		for (i = 0; i < s->stack_size - 1; ++i)			s->stack[i] = s->stack[i + 1];		s->stack[s->stack_size - 1] = temp;		s->mode = LAST_WAS_FUNCTION;		Draw_Stack(s);		return(OK);	}      case 'q':      case ESC_END:		/* Quit		 */      case EOF:      case CTRL_D:	return(EOF);      case 'r':      case ESC_LEFT:		/* Recall from register */	{		int numeral;		Draw_Prompt("Register?");		numeral = Get_Char() - '0';		Erase_Prompt();		if (numeral < 0 || numeral >= REGISTERS ||				    ((1 << numeral) & s->register_mask) == 0)			return(ERROR);		if (s->mode != LAST_WAS_ENTER) Push(s);		s->stack[0] = s->registers[numeral];		s->mode = LAST_WAS_FUNCTION;		Draw_Stack(s);		return(OK);	}      case 's':      case ESC_RIGHT:		 /* Store in register,  */			 	 /* Or accumulate if "s+" is typed */	{		int c;		int numeral;		Draw_Prompt("Register?");		c = Get_Char();		if (c == ESC_PLUS)			c = '+';	/* Allow keypad '+' */		if (c == '+') {			Draw_Prompt("Accumulator?");			numeral = Get_Char() - '0';		} else			numeral = c - '0';		Erase_Prompt();		if (numeral < 0 || numeral >= REGISTERS) return(ERROR);		if (c != '+' || (s->register_mask & (1 << numeral)) == 0) {			s->register_mask |= 1 << numeral;			s->registers[numeral] = s->stack[0];		} else			s->registers[numeral] += s->stack[0];		s->mode = LAST_WAS_FUNCTION;		Draw_Registers(s);		return(OK);	}      case 't':			/* Translate from ASCII */	{		long int numeral;		Draw_Prompt("Character?");		numeral = (long int) Getc();		Erase_Prompt();		if (s->mode != LAST_WAS_ENTER) Push(s);		s->stack[0] = numeral;		s->mode = LAST_WAS_FUNCTION;		Draw_Stack(s);		return(OK);	}      case 'w':      case ESC_PGUP:		/* Write tos to a file */	{		if (s->scratch_pad == (FILE *) NULL) {			/* Try to open a scratch pad file  */			strcpy(s->file_name, "./pad");			if ((s->scratch_pad = fopen(s->file_name,"w")) ==NULL){				/* Unsuccessful, try in /tmp  */				char *id;				strcpy(s->file_name, "/tmp/pad_");				if ((id = cuserid(NULL)) == NULL)					return(ERROR);				strcat(s->file_name, id);				if ((s->scratch_pad = fopen(s->file_name, "w")) == NULL)					return(ERROR);			}			Draw_Screen(s);		}		/* We have a successfully opened file  */		Print_Number(s->scratch_pad, s->stack[0], s->output_base);		putc('\n', s->scratch_pad);		fflush(s->scratch_pad);		s->mode = LAST_WAS_FUNCTION;		return(OK);	}      case 'x':      case ESC_UP:		/* Exchange top of stack */	{		long int temp = s->stack[0];		if (s->stack_size < 2) return(ERROR);		s->stack[0] = s->stack[1];		s->stack[1] = temp;		s->mode = LAST_WAS_FUNCTION;		Draw_Stack(s);		return(OK);	}      case 'z':      case ESC_HOME:		/* Clear all */	Init_State(s);	Draw_Screen(s);	return(OK);      case BS:      case DEL:			/* Clear top of stack */	s->stack[0] = 0;	s->mode = LAST_WAS_ENTER;	Draw_Top_of_Stack(s);	return(OK);      case '\n':		/* Enter */	Push(s);	s->mode = LAST_WAS_ENTER;	Draw_Stack(s);	return(OK);      case '.':			/* Change sign */	s->last_tos = s->stack[0];	s->stack[0] = -s->stack[0];	s->mode = LAST_WAS_FUNCTION;	Draw_Top_of_Stack(s);	return(OK);      case '+':      case ESC_PLUS:		/* Add */	if (s->stack_size < 2) return(ERROR);	s->last_tos = s->stack[0];	Pop(s);	s->stack[0] += s->last_tos;	s->mode = LAST_WAS_FUNCTION;	Draw_Stack(s);	return(OK);      case '-':      case ESC_MINUS:		/* Subtract */	if (s->stack_size < 2) return(ERROR);	s->last_tos = s->stack[0];	Pop(s);	s->stack[0] -= s->last_tos;	s->mode = LAST_WAS_FUNCTION;	Draw_Stack(s);	return(OK);      case '*':			/* Multiply */	if (s->stack_size < 2) return(ERROR);	s->last_tos = s->stack[0];	Pop(s);	if (s->input_base == DECIMAL)		s->stack[0] *= s->last_tos;	else		s->stack[0] = (long int) (UNS(s->stack[0]) * UNS(s->last_tos));	s->mode = LAST_WAS_FUNCTION;	Draw_Stack(s);	return(OK);      case '/':			/* Divide */	if (s->stack_size < 2 || s->stack[0] == 0) return(ERROR);	s->last_tos = s->stack[0];	Pop(s);	if (s->input_base == DECIMAL)		s->stack[0] /= s->last_tos;	else		s->stack[0] = (long int) (UNS(s->stack[0]) / UNS(s->last_tos));	s->mode = LAST_WAS_FUNCTION;	Draw_Stack(s);	return(OK);      case '%':      case ESC_5:		/* Remainder */	if (s->stack_size < 2 || s->stack[0] == 0) return(ERROR);	s->last_tos = s->stack[0];	Pop(s);	if (s->input_base == DECIMAL)		s->stack[0] %= s->last_tos;	else		s->stack[0] = (long int) (UNS(s->stack[0]) % UNS(s->last_tos));	s->mode = LAST_WAS_FUNCTION;	Draw_Stack(s);	return(OK);      case '~':			/* Not */	s->last_tos = s->stack[0];	s->stack[0] = ~s->stack[0];	s->mode = LAST_WAS_FUNCTION;	Draw_Top_of_Stack(s);	return(OK);      case '&':			/* And */	if (s->stack_size < 2) return(ERROR);	s->last_tos = s->stack[0];	Pop(s);	s->stack[0] &= s->last_tos;	s->mode = LAST_WAS_FUNCTION;	Draw_Stack(s);	return(OK);      case '|':			/* Or */	if (s->stack_size < 2) return(ERROR);	s->last_tos = s->stack[0];	Pop(s);	s->stack[0] |= s->last_tos;	s->mode = LAST_WAS_FUNCTION;	Draw_Stack(s);	return(OK);      case '^':			/* Exclusive-or */	if (s->stack_size < 2) return(ERROR);	s->last_tos = s->stack[0];	Pop(s);	s->stack[0] ^= s->last_tos;	s->mode = LAST_WAS_FUNCTION;	Draw_Stack(s);	return(OK);      default:		return(ERROR);  }}/*****************************************************************//*								 *//*	Enter_Numeric( state, numeral )				 *//*								 *//*		A numeral (0 to 15) has been typed.		 *//*		If a number is currently being entered	 	 *//*		then shift it over and add this to the		 *//*		display. If the last operation was a function    *//*		then push up the stack first. If the last 	 *//*		key was "ENTER", then clear out the top of	 *//*		the stack and put the numeral there.		 *//*								 *//*		Returns OK or ERROR.				 *//*								 *//*****************************************************************/int Enter_Numeric(s, numeral)ic_state *s;int numeral;{  if (numeral >= s->input_base) return(ERROR);  switch (s->mode) {      case LAST_WAS_FUNCTION:	Push(s);	s->stack[0] = numeral;	Draw_Stack(s);	break;      case LAST_WAS_NUMERIC:	s->stack[0] = s->stack[0] * s->input_base + numeral;	Draw_Top_of_Stack(s);	break;      case LAST_WAS_ENTER:	s->stack[0] = numeral;	Draw_Top_of_Stack(s);	break;      default:	fprintf(stderr, "Internal failure (mode)\n");	Sigint(0);  }  s->mode = LAST_WAS_NUMERIC;  return(OK);}/*****************************************************************//*								 *//*	Push( state )						 *//*								 *//*		Push up the stack one level.			 *//*								 *//*****************************************************************/void Push(s)ic_state *s;{  int i;  if (s->stack_size == STACK_SIZE) --s->stack_size;  for (i = s->stack_size; i > 0; --i) s->stack[i] = s->stack[i - 1];  ++s->stack_size;}/*****************************************************************//*								 *//*	Pop( state )						 *//*								 *//*		Pop the stack down one level.			 *//*		This routine is only called with 		 *//*		the stack size > 1.				 *//*								 *//*****************************************************************/void Pop(s)ic_state *s;{  int i;  for (i = 0; i < s->stack_size - 1; ++i) s->stack[i] = s->stack[i + 1];  --s->stack_size;}/****************************************************************//*							  	*//*	Exec_Shell()					  	*//*							  	*//*		Fork off a sub-process to exec() the shell.  	*//*							  	*//****************************************************************/void Exec_Shell(){  int pid = fork();  if (pid == -1) return;  if (pid == 0) {	/* The child process  */	extern char **environ;	char *shell = getenv("SHELL");	if (shell == NULL) shell = "/bin/sh";	execle(shell, shell, (char *) 0, environ);	perror(shell);	exit(127);  }  /* The parent process: ignore signals, wait for sub-process	 */  signal(SIGINT, SIG_IGN);  signal(SIGQUIT, SIG_IGN);  {	int status;	int w;	while ((w = wait(&status)) != pid && w != -1);  }  signal(SIGINT, Sigint);  signal(SIGQUIT, Sigint);  return;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产不卡视频在线观看| 7777精品久久久大香线蕉| 在线精品亚洲一区二区不卡| 制服丝袜日韩国产| 中文字幕精品三区| 日av在线不卡| 欧美亚洲国产一区二区三区va| 欧美大黄免费观看| 亚洲国产另类av| 不卡的电影网站| 亚洲精品一区二区精华| 亚洲五月六月丁香激情| www.欧美亚洲| 国产午夜亚洲精品羞羞网站| 丝袜美腿一区二区三区| 91成人免费网站| 亚洲欧美综合网| 高清视频一区二区| 久久久蜜桃精品| 精品夜夜嗨av一区二区三区| 欧美日韩一区二区在线观看| 综合久久一区二区三区| 国产福利不卡视频| 久久亚洲综合av| 国产毛片精品国产一区二区三区| 欧美一区二区视频在线观看2022 | 在线精品亚洲一区二区不卡| 国产欧美一区二区精品性色超碰 | 2020日本不卡一区二区视频| 五月婷婷激情综合| 欧美日韩一区二区三区在线| 亚洲一级片在线观看| 欧美午夜精品一区二区蜜桃 | 国产欧美综合色| 国产成人亚洲精品青草天美| 国产欧美视频一区二区| 国产乱子轮精品视频| 久久免费美女视频| 国产91精品在线观看| 国产女人水真多18毛片18精品视频| 久草精品在线观看| 久久精品一区四区| 成人一道本在线| 成人免费一区二区三区在线观看| 成人97人人超碰人人99| 亚洲男人的天堂在线aⅴ视频 | 国产精品911| 中文字幕免费不卡| 一本高清dvd不卡在线观看| 一区二区不卡在线视频 午夜欧美不卡在 | 日本sm残虐另类| 3d成人h动漫网站入口| 亚洲第一福利视频在线| 欧美日韩国产区一| 奇米亚洲午夜久久精品| 久久久久国产精品麻豆| 成人激情视频网站| 亚洲影视资源网| 日韩欧美色综合| 国产精品99久久不卡二区| 中文字幕一区二区三区四区| 欧美亚洲国产bt| 韩国av一区二区| 国产精品蜜臀av| 91精品久久久久久蜜臀| 国产剧情在线观看一区二区| 亚洲综合在线电影| 日韩久久精品一区| 成人动漫在线一区| 丝袜脚交一区二区| 亚洲国产精品成人久久综合一区| 欧美影视一区二区三区| 精品亚洲免费视频| 一区二区三区四区视频精品免费 | 一区二区三区 在线观看视频| 678五月天丁香亚洲综合网| 成人午夜av电影| 日韩电影在线看| 亚洲色图.com| 精品日韩欧美一区二区| 在线观看日韩高清av| 国产成人午夜精品影院观看视频| 亚洲国产日韩一区二区| 国产精品无码永久免费888| 日韩一区二区三区在线| 日本韩国一区二区三区| 国产精品羞羞答答xxdd | 亚洲欧美福利一区二区| 亚洲精品一区在线观看| 欧美中文字幕亚洲一区二区va在线 | 一区二区三区日本| 精品国产一区二区在线观看| av一区二区不卡| 国产在线精品一区二区三区不卡 | 国产欧美精品一区二区三区四区| 欧美蜜桃一区二区三区| 91视频免费看| 成人av网站免费| 国产成人在线视频播放| 黄色小说综合网站| 亚洲a一区二区| 一区二区三区在线播放| 国产精品麻豆视频| 久久久精品欧美丰满| 欧美一区二区三区视频免费| 91电影在线观看| 欧美专区日韩专区| 91福利国产精品| 在线亚洲免费视频| 日本电影欧美片| 色狠狠一区二区三区香蕉| 9色porny自拍视频一区二区| 成人久久视频在线观看| 成人精品gif动图一区| 懂色av一区二区三区免费观看| 国产一区二区中文字幕| 韩国成人精品a∨在线观看| 黄色小说综合网站| 国产精品99久久久久久久女警| 久久精品久久综合| 国产在线一区二区| 国产精品白丝jk白祙喷水网站| 国产精品亚洲午夜一区二区三区 | 国产乱码精品一区二区三区av| 久草热8精品视频在线观看| 国产综合色视频| 高清日韩电视剧大全免费| 99热99精品| 91传媒视频在线播放| 欧美日韩一级片网站| 日韩免费成人网| 国产日韩欧美不卡在线| 日韩毛片视频在线看| 亚洲午夜一区二区| 日韩和欧美一区二区| 国产一区二区三区久久悠悠色av| 成人少妇影院yyyy| 色网综合在线观看| 欧美一区二区三区视频免费播放| 久久先锋影音av| 国产精品久久久久精k8| 亚洲国产一区二区三区 | 精品国偷自产国产一区| 国产精品乱子久久久久| 亚洲一区在线视频观看| 久久99热狠狠色一区二区| av电影天堂一区二区在线观看| 欧美日韩亚洲高清一区二区| 精品国产乱码久久久久久牛牛| 国产精品久久久久久久久久免费看| 亚洲资源在线观看| 久久66热偷产精品| 日本大香伊一区二区三区| 欧美一级高清片| 亚洲天堂福利av| 久久精品二区亚洲w码| 色噜噜狠狠成人网p站| 精品国产91久久久久久久妲己| 国产精品久久久久久亚洲毛片| 日韩国产精品久久久| jlzzjlzz国产精品久久| 91精品国产综合久久香蕉的特点| 久久精品一区蜜桃臀影院| 无吗不卡中文字幕| 成年人国产精品| 欧美大片在线观看一区二区| 亚洲乱码一区二区三区在线观看| 久久精品72免费观看| 色欧美日韩亚洲| 日本一区二区三区免费乱视频| 日本人妖一区二区| 在线视频国内自拍亚洲视频| 国产精品天干天干在线综合| 另类小说视频一区二区| 欧洲av在线精品| 国产精品久久毛片av大全日韩| 日韩精品国产欧美| 欧美亚洲综合久久| 亚洲三级在线播放| 国产精品一品视频| 欧美成人精品3d动漫h| 亚洲二区视频在线| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 国产九九视频一区二区三区| 欧美美女视频在线观看| 亚洲你懂的在线视频| 懂色av中文一区二区三区| 久久精品一区二区三区av| 日本成人在线一区| 欧美日韩国产a| 一区二区三区精品久久久| av日韩在线网站| 日韩美女视频19| 91色综合久久久久婷婷| 国产女人aaa级久久久级| 国产成人在线视频播放| 久久久亚洲午夜电影| 国产精品一卡二| 国产精品热久久久久夜色精品三区| 国产精品一线二线三线精华|