📄 prttext.h
字号:
************************************************************************************/
DISPLAY_CPU()
{
char buf[80];
if(DISPLAY_MODE == TEXT)
{
ACTIVE_WINDOW(2);
/* 将系统时间转为字符串 */
itoa(RTIME,buf,10);
/* 改变字符串的长度 */
CHANGE_LEN(buf,4);
/* 显示该字符串 */
PRINT_INFORMATION(8,1,buf,15,WIN[1].wb);
/* 将相对时间转为字符串 */
itoa(TIME,buf,10);
/* 改变字符串的长度 */
CHANGE_LEN(buf,4);
/* 显示该字符串 */
PRINT_INFORMATION(8,2,buf,15,WIN[1].wb);
/* 将PC计数器的值转为字符串 */
itoa(PC,buf,10);
/* 改变字符串的长度 */
CHANGE_LEN(buf,4);
/* 显示该字符串 */
PRINT_INFORMATION(8,3,buf,15,WIN[1].wb);
/* 将通用寄存器的值转为字符串 */
itoa(R,buf,10);
/* 改变字符串的长度 */
CHANGE_LEN(buf,4);
/* 显示该字符串 */
PRINT_INFORMATION(8,4,buf,15,WIN[1].wb);
buf[0] = C;
buf[1] = '\0';
/* 显示该字符串 */
PRINT_INFORMATION(8,5,buf,15,WIN[1].wb);
/* 将程序中断寄存器为字符串 */
itoa(__PI,buf,10);
/* 改变字符串的长度 */
CHANGE_LEN(buf,4);
/* 显示该字符串 */
PRINT_INFORMATION(22,1,buf,15,WIN[1].wb);
/* 将系统中断寄存器转为字符串 */
itoa(__SI,buf,10);
/* 改变字符串的长度 */
CHANGE_LEN(buf,4);
/* 显示该字符串 */
PRINT_INFORMATION(22,2,buf,15,WIN[1].wb);
/* 将TI中断寄存器转为字符串 */
itoa(__TI,buf,10);
/* 改变字符串的长度 */
CHANGE_LEN(buf,4);
/* 显示该字符串 */
PRINT_INFORMATION(22,3,buf,15,WIN[1].wb);
/* 将IOI中断寄存器转为字符串 */
itoa(__IOI,buf,10);
/* 改变字符串的长度 */
CHANGE_LEN(buf,4);
/* 显示该字符串 */
PRINT_INFORMATION(22,4,buf,15,WIN[1].wb);
/* 显示当前指令内容 */
PRINT_INFORMATION(14,6,CURRENT_INSTRUCTION,15,WIN[1].wb);
}
}
/***********************************************************************************
模块名称: 界面输出(文本方式)
函 数 名: DISPLAY_MEMORY
功 能: 显示内存页表使用情况
入口参数: 无
出口参数: 无
调用关系: 被其它模块调用
编 者: 蔡晓跃(AP0106338)
编写日期:
************************************************************************************/
DISPLAY_MEMORY()
{
int i;
if(DISPLAY_MODE == TEXT)
{
/* 激活第二个窗口 */
ACTIVE_WINDOW(2);
for(i=0;i<3;i++)
{
/* 如果内存当前页为空闲*/
if(PAGE_OF_MEMORY[i].status == FREE)
{
/* 显示黄色的FREE字样 */
PRINT_INFORMATION(17,9+i," FREE ",yellow_color,0);
}
else
{
/* 如果被占用则显示红色的TAKEN字样 */
PRINT_INFORMATION(17,9+i," TAKEN ",LIGHTRED,0);
}
}
}
}
/***************************************************************************************
模块名称: 界面输出(文本方式)
函 数 名: DISPLAY_HARDDISK
功 能: 显示硬盘使用情况
入口参数: 无
出口参数: 无
调用关系:
编 者: 蔡晓跃(AP0106338)
编写日期:
***************************************************************************************/
DISPLAY_HARDDISK()
{
int i,wlen,rlen;
if(DISPLAY_MODE == TEXT)
{
/* 激活第二窗口 */
ACTIVE_WINDOW(2);
wlen = HDWpointer - &HD[0][0];
if(wlen == 0)
wlen = -1;
else
{
/* 硬盘每100字作为一个显示单位来显示 */
wlen /= (100*4);
wlen++;
}
rlen = HDRpointer - &HD[0][0];
if(rlen == 0)
rlen = -1;
else
{
rlen /= (100*4);
rlen++;
}
for(i=0;i<10;i++)
{
if(i<rlen)
{
/* 如果该位置的作业已装入内存,显示白色的LOADED字样 */
PRINT_INFORMATION(3,9+i," LOADED ",WHITE,0);
}
else if(i<wlen)
{
/* 如果该位置被使用,则显示浅红色的USED字样 */
PRINT_INFORMATION(3,9+i," USED ",LIGHTRED,0);
}
else
{
/* 如果该位置未被使用,显示黄色的YELLOW字样 */
PRINT_INFORMATION(3,9+i," FREE ",yellow_color,0);
}
}
}
}
/***************************************************************************************
模块名称: 界面输出(文本方式)
函 数 名: PRINT_INFORMATION
功 能: 在指定的位置上打印字符串信息
入口参数: (int x,int y)位置 (char *p)要打印的字符串首地址 (int t,int b)文本颜色和背景颜色
出口参数: 无
调用关系:
编 者: 蔡晓跃(AP0106338)
编写日期:
***************************************************************************************/
PRINT_INFORMATION(int x,int y,char *p,int t,int b)
{
if(DISPLAY_MODE == TEXT)
{
/* 跳到指定的位置 */
gotoxy(x,y);
/* 设置前景即文本颜色 */
textcolor(t);
/* 设置背景颜色 */
textbackground(b);
/* 在窗口内打印字符串信息 */
cprintf("%s",p);
}
}
/****************************************************************************************
所属模块: 界面输出(文本方式)
函 数 名: INIT_QUEUE_WINDOW
功 能: 在队列窗口中各队列信息
入口参数: 无
出口参数: 无
调用关系:
编 者: 蔡晓跃(AP0106338)
编写日期:
****************************************************************************************/
INIT_QUEUE_WINDOW()
{
if(DISPLAY_MODE == TEXT)
{
/* 激活窗口3 */
ACTIVE_WINDOW(3);
/* 显示运行队列 */
PRINT_INFORMATION(1,1,"RUNNING:",WIN[2].wt,WIN[2].wb);
/* 显示就绪队列 */
PRINT_INFORMATION(1,2,"READY :",WIN[2].wt,WIN[2].wb);
/* 显示阻塞队列 */
PRINT_INFORMATION(1,3,"IOI BLOCK:",WIN[2].wt,WIN[2].wb);
}
}
/***************************************************************************************
所属模块: 界面输出(文本方式)
函 数 名: DISPLAY_QUEUE
功 能: 显示队列成员信息
入口参数: 无
出口参数: 无
调用关系:
编 者: 蔡晓跃(AP0106338)
编写日期:
****************************************************************************************/
DISPLAY_QUEUE()
{
int j;
char buf[10];
PCB *h;
if(DISPLAY_MODE == TEXT)
{
/* 激活窗口3 */
ACTIVE_WINDOW(3);
/* 如果运行队列中存在成员,则显示成员信息 */
if(RUNNING_QUEUE->p_tick == 1)
{
/* 将正在运行的进程名称复制到buf缓冲区中 */
strcpy(buf,RUNNING_QUEUE->p_next->p_name);
/* 改变字符串长度 */
CHANGE_LEN(buf,5);
}
else
{
/* 如果运行队列中没有进程 ,则置字符串为空串 */
buf[0]='\0';
/* 改变字符串长度 */
CHANGE_LEN(buf,5);
}
/* 显示运行队列成员信息 */
PRINT_INFORMATION(9,1,buf,yellow_color,WIN[2].wb);
h = READY_QUEUE->p_next;
/* 循环显示就绪队列中的成员信息 */
for(j=0;j<3;j++)
{
if(h != NULL)
{
/* 将就绪队列中的进程名称复制到buf缓冲区中 */
strcpy(buf,h->p_name);
/* 改变字符串长度 */
CHANGE_LEN(buf,6);
}
else
{
/* 如果没有进程 ,则置字符串为空串 */
buf[0]='\0';
/* 改变字符串长度 */
CHANGE_LEN(buf,6);
}
/* 显示就绪队列成员信息 */
PRINT_INFORMATION(9+j*6,2,buf,yellow_color,WIN[2].wb);
if(h != NULL)
h = h->p_next;
}
h = IO_BLOCK_QUEUE[1]->p_next;
/* 循环显示阻塞队列中的成员信息 */
for(j=0;j<3;j++)
{
if(h != NULL)
{
/* 将阻塞队列中的进程名称复制到buf缓冲区中 */
strcpy(buf,h->p_name);
/* 改变字符串长度 */
CHANGE_LEN(buf,6);
}
else
{
/* 如果没有进程 ,则置字符串为空串 */
buf[0]='\0';
/* 改变字符串长度 */
CHANGE_LEN(buf,6);
}
/* 显示就绪队列成员信息 */
PRINT_INFORMATION(11+j*6,3,buf,yellow_color,WIN[2].wb);
if(h != NULL)
h = h->p_next;
}
ACTIVE_WINDOW(1);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -