⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 prttext.h

📁 该模块包括作业调度的三个系统进程。P1、P2、P3进程功能的实现。 P1负责对用户作业预输入处理
💻 H
📖 第 1 页 / 共 2 页
字号:
/****************************************************************************
*****************************************************************************

文件名称:	PRTTEXT.H
模块名称:	用户界面输出模块
模块作用:	 
编写者一:	
编写者二:	
编写日期:
完成日期:
程序行数:	600

*****************************************************************************
*****************************************************************************/

/****************************************************************************
所属模块:	界面输出(文本方式)
函 数 名:	INIT_PARAMETER_WINDOW
功    能:	初始化文本方式下的窗口参数及调用图形方式下的初始化程序
入口参数:	无
出口参数:	无
调用关系:	被主模块调用
编    者:	蔡晓跃(AP0106338)
编写日期:	2003-10-10
****************************************************************************/
INIT_PARAMETER_WINDOW()
{
	if(DISPLAY_MODE == TEXT)
	{
		/* 如果是运行在文本方式下,则初始化各窗口属性参数 */
		/* 窗口的左坐标 */
		WIN[0].left = 1;
		/* 窗口的顶坐标 */
		WIN[0].top = 1;
		/* 窗口的右标 */
		WIN[0].right = 50;
		/* 窗口的底坐标 */
		WIN[0].bottom = 20;
		/* 窗口的正文文本颜色 */
		WIN[0].wt = 14;
		/* 窗口的背景颜色 */
		WIN[0].wb = 1;
		/* 窗口的标题文本颜色 */
		WIN[0].tt = 5;
		/* 窗口的标题背景颜色 */
		WIN[0].tb = 7;
		/* 窗口的标题指针 */
		WIN[0].p = INF[0];

		WIN[1].left = 51;
		WIN[1].top = 1;
		WIN[1].right = 80;
		WIN[1].bottom = 20;
		WIN[1].wt = 9;
		WIN[1].wb = 3;
		WIN[1].tt = 5;
		WIN[1].tb = 7;
		WIN[1].p = INF[1];

		WIN[2].left = 1;
		WIN[2].top = 21;
		WIN[2].right = 50;
		WIN[2].bottom = 25;
		WIN[2].wt = 15;
		WIN[2].wb = 0;
		WIN[2].tt = 5;
		WIN[2].tb = 7;
		WIN[2].p = INF[2];

		WIN[3].left = 51;
		WIN[3].top = 21;
		WIN[3].right = 80;
		WIN[3].bottom = 25;
		WIN[3].wt = 1;
		WIN[3].wb = 7;
		WIN[3].tt = 5;
		WIN[3].tb = 1;
		WIN[3].p = INF[3];
	}
}

/****************************************************************************
所属模块:界面输出(文本方式)
函 数 名:SET_WINDOW
功    能:通过窗口序号开辟一个新窗口
入口参数:i(int) 窗口序号
出口参数:无
调用关系:
编    者:	蔡晓跃(AP0106338)
编写日期:2003-10-10
****************************************************************************/
SET_WINDOW(int i)
{
	/* 文本界面方式下*/
	if(DISPLAY_MODE == TEXT)
	{
		if(i < 1  || i> 4)
			/* 输入的窗口下标越界,不进行操作直接返回 */
			return(FALSE);
		else
		{
			/* 窗口参数数组的坐标从零开始 */
			i--;
			/* 按照指定的参数开辟并显示一个新窗口 */
			NEW_WINDOW(WIN[i].left,WIN[i].top,WIN[i].right,WIN[i].bottom,WIN[i].wt,WIN[i].wb,WIN[i].tt,WIN[i].tb,WIN[i].p);
		}
	}
}


/**************************************************************************************
模块名称:	界面输出(文本方式)
函 数 名:	NEW_WINDOW
功    能:	通过窗口属性参数表创建一个新窗口
入口参数:	(x1,y1,x2,y2)窗口坐标 (tcolor,bcolor)窗口颜色值
			(t,b,*p)窗口标题颜色及标题指针
出口参数:	无
调用关系:	被函数 SET_WINDOW 调用,实现窗口属性与其标题参数的分离
编    者:
编写日期:	2003-10-10
**************************************************************************************/
NEW_WINDOW(int x1,int y1,int x2,int y2,int tcolor,int bcolor,int t,int b,char *p)
{
	/* 显示窗口标题 */
	PER_WINDOW(x1,y1,x2,y1+1,t,b,1,p);
	/* 显示窗口实体 */
	PER_WINDOW(x1,y1+1,x2,y2,tcolor,bcolor,0,p);
}


/***************************************************************************************
模块名称:	界面输出(文本方式)
函 数 名:	PER_WINDOW
功    能:	通过窗口属性画一窗口或窗口标题(最终实现)
入口参数:	(x1,y1,x2,y2)窗口坐标 (t,b,*p)窗口标题属性 display 是否为标题
出口参数:	无
调用关系:	被函数 NEW_WINDOW 调用
编    者:	蔡晓跃(AP0106338)
编写日期:	2003-10-10
***************************************************************************************/
PER_WINDOW(int x1,int y1,int x2,int y2,int t,int b,int display,char *p)
{
	int len,px;
	/* 创建窗口实体 */
	window(x1,y1,x2,y2);
	/* 设置窗口文本颜色 */
	textcolor(t);
	/* 设置窗口背景颜色 */
	textbackground(b);
	/* 清除新创建的窗口屏幕内容,使颜色值生效 */
	clrscr();
	/* 如果(display == 1)则表示为窗口标题,显示指针p的内容 */
	if(display == 1)
	{
		/* 获得窗口标题的长度*/
		len = strlen(p);
		/* 以居中显示方式计算标题的左端位置 */
		px=(x2-x1-len)/2;
		/* 定位到要显示标题的起始位置 */
		gotoxy(px,1);
		/* 显示窗口标题的内容 */
		cprintf("%s",p);
	}
}

/***************************************************************************************
模块名称:	界面输出(文本方式)
函 数 名:	ACTIVE_WINDOW
功    能:	激活窗口为当前输出窗口
入口参数:	(int i) i为要激活的窗口下标 (窗口下标从 1 开始)
出口参数:	无
调用关系:	
编    者:	蔡晓跃(AP0106338)	
编写日期:	2003-10-10
****************************************************************************************/
ACTIVE_WINDOW(int i)
{
	/* 如果为图形方式下,则该函数无效,不执行任何操作 */
	if(DISPLAY_MODE ==	TEXT)
	{
		/* 如果要激活的窗口下标越界,出错,直接返回 */
		if(i < 1 || i > 4)
			return(FALSE);
		else
		{
			/* 窗口下标减1,与窗口属性数组下标对应 */
			i--;
			/* 指定当前窗口的坐标范围 */
			window(WIN[i].left,WIN[i].top+1,WIN[i].right,WIN[i].bottom);
			/* 设置当前窗口前景文本颜色 */
			textcolor(WIN[i].wt);
			/* 设置当前窗口背景颜色 */
			textbackground(WIN[i].wb);
			/* 将当前窗口的属性保存到全局变量(CURRENT_WINDOW)中
			该变量保存当前激活窗口属性 */
			CURRENT_WINDOW_X1 = WIN[i].left;
			CURRENT_WINDOW_X2 = WIN[i].right;
			CURRENT_WINDOW_Y1 = WIN[i].top;
			CURRENT_WINDOW_Y2 = WIN[i].bottom;
		}
		if(CURRENT_WINDOW == i)
		{
			/* 如果上次窗口与当前被激活窗口是同一窗口*/
			/* 则光标没有跨越两个窗口,窗口改变属性为FALSE */
			HAD_CHANGED_WINDOW = FALSE;
		}
		else
		{
			/* 如果上次窗口与当前激活窗口不是同一窗口
			则窗口焦点发生变化,置当前窗口为新的激活窗口*/
			CURRENT_WINDOW = i;
			/* 窗口改变标志置于为TRUE */
			HAD_CHANGED_WINDOW = TRUE;
		}
		/* 调用设置光标位置子程序,重新设置光标位置 */
		SET_PRINTER_POSITION();
	}
}


/***************************************************************************************
模块名称:	界面输出(文本方式)
函 数 名:	SET_PRINTER_POSITION
功    能:	设置光标在窗口中的位置,即打印输出位置
入口参数:	无(以全局变量 HAD_CHANGED_WINDOW)作为默认参数
出口参数:	无
调用关系:	被ACTIVE_WINDOW调用
编    者:	蔡晓跃(AP0106338)
编写日期:	2003-10-10
****************************************************************************************/
SET_PRINTER_POSITION()
{
	int x,y; /* 光标坐标变量*/
	if(HAD_CHANGED_WINDOW == FALSE)
		/* 如果窗口没有改变,不用重置光标坐,直接返回 */
		;
	else
	{
		x = 1;
		y = CURRENT_WINDOW_Y2 - CURRENT_WINDOW_Y1;
		/* 定位到当前窗口的最后一行 */
		gotoxy(x,y);
		/* 重置窗口改变为FALSE */
		HAD_CHANGED_WINDOW = FALSE;
	}
}


/************************************************************************************
模块名称:	界面输出(文本方式)
函 数 名:	INIT_CPU_MEMORY_INTERRUPT
功    能:	初始化并显示CPU,内存,中断参数标题
入口参数:	无
出口参数:	无
调用关系:	其它模块调用	
编    者:	蔡晓跃(AP0106338)
编写日期:	2003-10-10
*************************************************************************************/
INIT_CPU_MEMORY_INTERRUPT()
{
	if(DISPLAY_MODE == TEXT)
	{
		ACTIVE_WINDOW(2);
		/* 输出系统时间标题 */
		PRINT_INFORMATION(1,1,"RTIME:",WIN[1].wt,WIN[1].wb);
		/* 输出相对时间标题 */
		PRINT_INFORMATION(1,2," TIME:",WIN[1].wt,WIN[1].wb);
		/* 输出PC计数器标题 */
		PRINT_INFORMATION(1,3," PC  :",WIN[1].wt,WIN[1].wb);
		/* 输出通用寄存器标题 */
		PRINT_INFORMATION(1,4," R   :",WIN[1].wt,WIN[1].wb);
		/* 输出状态寄存器标题 */
		PRINT_INFORMATION(1,5," C   :",WIN[1].wt,WIN[1].wb);
		/* 输出当前指令标题 */
		PRINT_INFORMATION(1,6,"INSTRUCTION:",WIN[1].wt,WIN[1].wb);
		/* 输出程序性中断标题 */
		PRINT_INFORMATION(16,1," PI : ",WIN[1].wt,WIN[1].wb);
		/* 输出系统中断标题 */
		PRINT_INFORMATION(16,2," SI : ",WIN[1].wt,WIN[1].wb);
		/* 输出时间中断标题 */
		PRINT_INFORMATION(16,3," TI : ",WIN[1].wt,WIN[1].wb);
		/* 输出访问外设中断标题 */
		PRINT_INFORMATION(16,4," IOI: ",WIN[1].wt,WIN[1].wb);

		/* 输出硬盘标题 */
		PRINT_INFORMATION(4,8,"HARDDISK",WIN[1].wt,WIN[1].wb);
		/* 输出内存标题 */
		PRINT_INFORMATION(20,8,"MEMORY",WIN[1].wt,WIN[1].wb);
	
	}
}



/************************************************************************************
模块名称:	界面输出(文本方式)
函 数 名:	DISPLAY_CPU
功    能:	显示关于系统核心的参数值
入口参数:	无
出口参数:	无
调用关系:	被CPU调用
编    者:	蔡晓跃(AP0106338)
编写日期:

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -