📄 printer.h
字号:
编写日期:
****************************************************************************/
/* display the error,lines,job's name */
G_ERROR_INFORMATION(PCB *job,int dis)
{
int i,j,c,oldc;
char buf[10];
if(DISPLAY_MODE == TEXT)
return(0);
oldc = getcolor();
if(dis == TRUE)
{
/* p_error != -1 if job occur an error */
c = yellow_color;
}
else
c = 0;
for(i=0;i<4;i++)
{
/* 显示出错的中文信息 */
for(j=0;j<2;j++)
DRAWMAT(error_info+(i*2+j)*24,12,error_left+j*12+1,error_top+2+(i+1)*error_height,c);
setcolor(c);
/* 下面的部分显示出错的作业名称,行号,出错的指令代码 */
outtextxy(error_left+12*2+1,error_top+4+(i+1)*error_height,":");
if(i==1)
outtextxy(error_left+12*2+1+10,error_top+4+(i+1)*error_height,job->p_name);
else if(i==2)
{
if(job->p_error == 100)
itoa(1,buf,10);
else
itoa(job->p_error+3,buf,10);
outtextxy(error_left+12*2+1+10,error_top+4+(i+1)*error_height,buf);
}
else if(i==3)
{
if(job->p_error == 100)
{
strcpy(buf,"$BEGIN");
}
else
{
strcpy(buf,CURRENT_INSTRUCTION);
}
outtextxy(error_left+12*2+1+10,error_top+4+(i+1)*error_height,buf);
}
}
setcolor(oldc);
}
/****************************************************************************
所属模块: 界面输出(图形方式)
函 数 名: G_FLASH_INFORMATION
功 能: 显示出错的中文信息
入口参数: (char *p,int size,int len,int color)中文的首地址和大小,长度,颜色
出口参数: 无
调用关系:
编 者: 蔡晓跃(AP0106338)
编写日期:
****************************************************************************/
G_FLASH_INFORMATION(char *p,int size,int len,int color)
{
int i;
if(DISPLAY_MODE == TEXT)
return(0);
/* 显示中文信息 */
for(i=0;i<len;i++)
DRAWMAT(p+i*size*2,size,error_left+12*2+8+1+i*size+2,error_top+error_height+2,color);
}
/****************************************************************************
所属模块: 界面输出(图形方式)
函 数 名: G_DISPLAY_CPU
功 能: 显示CPU各参数的值
入口参数: 无
出口参数: 无
调用关系:
编 者: 蔡晓跃(AP0106338)
编写日期:
****************************************************************************/
G_DISPLAY_CPU()
{
char buf[10];
int i,c;
struct fillsettingstype fillinfo;
if(DISPLAY_MODE == TEXT)
return(0);
/* 保存当前线条设置和填充设置 */
getfillsettings(&fillinfo);
setfillstyle(1,blue_color);
for(i=1;i<7;i++)
{
bar(cpui_left+56,cpui_top+i*cpui_height+1,cpui_left+cpui_width*2/3-1,cpui_top+(i+1)*cpui_height-1);
bar(cpui_left+cpui_width*2/3+36,cpui_top+i*cpui_height+1,cpui_left+cpui_width-1,cpui_top+(i+1)*cpui_height-1);
}
/* 恢复线条设置和填充设置 */
setfillstyle(fillinfo.pattern,fillinfo.color);
/* display RTIME */
c = getcolor();
setcolor(yellow_color);
i=1;
/* 将RTIME的将转换成字符串的形式存放在buf中,然后再显示buf的内容 */
ltoa(RTIME,buf,10);
outtextxy(cpui_left+65,cpui_top+i++*cpui_height+4,buf);
/* 将TIME的将转换成字符串的形式存放在buf中,然后再显示buf的内容 */
itoa(TIME,buf,10);
outtextxy(cpui_left+65,cpui_top+i++*cpui_height+4,buf);
/* 将PC的将转换成字符串的形式存放在buf中,然后再显示buf的内容 */
itoa(PC,buf,10);
outtextxy(cpui_left+65,cpui_top+i++*cpui_height+4,buf);
/* 将R的将转换成字符串的形式存放在buf中,然后再显示buf的内容 */
itoa(R,buf,10);
outtextxy(cpui_left+65,cpui_top+i++*cpui_height+4,buf);
/* 将C的将转换成字符串的形式存放在buf中,然后再显示buf的内容 */
buf[0]=C;
buf[1]='\0';
outtextxy(cpui_left+65,cpui_top+i++*cpui_height+4,buf);
/* 显示当前指令内容*/
outtextxy(cpui_left+65,cpui_top+i++*cpui_height+4,CURRENT_INSTRUCTION);
setcolor(c);
/* 显示中断参数 */
G_DISPLAY_INTERRUPT();
if(RUNNING_QUEUE->p_next->p_id>=0)
G_DISPLAY_ONE_PC_R_C(RUNNING_QUEUE->p_next,RUNNING_QUEUE->p_next->p_color,0);
}
/****************************************************************************
所属模块: 界面输出(图形方式)
函 数 名: G_DISPLAY_INTERRUPT
功 能: 显示中断参数
入口参数: 无
出口参数: 无
调用关系:
编 者: 蔡晓跃(AP0106338)
编写日期:
****************************************************************************/
G_DISPLAY_INTERRUPT()
{
char buf[10];
int i,c;
struct fillsettingstype fillinfo;
if(DISPLAY_MODE == TEXT)
return(0);
/* 保存当前线条设置和填充设置 */
getfillsettings(&fillinfo);
setfillstyle(1,blue_color);
/* 清除上次显示的结果 */
for(i=1;i<7;i++)
bar(cpui_left+cpui_width*2/3+36,cpui_top+i*cpui_height+1,cpui_left+cpui_width-1,cpui_top+(i+1)*cpui_height-1);
setfillstyle(fillinfo.pattern,fillinfo.color);
c = getcolor();
setcolor(yellow_color);
i=1;
/* 将__PI的将转换成字符串的形式存放在buf中,然后再显示buf的内容 */
itoa(__PI,buf,10);
outtextxy(cpui_left+cpui_width*2/3+44,cpui_top+i++*cpui_height+4,buf);
/* 将__SI的将转换成字符串的形式存放在buf中,然后再显示buf的内容 */
itoa(__SI,buf,10);
outtextxy(cpui_left+cpui_width*2/3+44,cpui_top+i++*cpui_height+4,buf);
/* 将__TI的将转换成字符串的形式存放在buf中,然后再显示buf的内容 */
itoa(__TI,buf,10);
outtextxy(cpui_left+cpui_width*2/3+44,cpui_top+i++*cpui_height+4,buf);
/* 将__IOI的将转换成字符串的形式存放在buf中,然后再显示buf的内容 */
itoa(__IOI,buf,10);
outtextxy(cpui_left+cpui_width*2/3+44,cpui_top+i++*cpui_height+4,buf);
/* 如果当前运行的不是系统进程,则显示用户进程已占用CPU的时间和已输出的行数 */
if(RUNNING_QUEUE->p_next!=NULL && RUNNING_QUEUE->p_next->p_id >=0)
{
/* 将用户进程已占用的CPU时间转换成字符串的形式存放在buf中,然后再显示buf的内容 */
itoa(RUNNING_QUEUE->p_next->p_running_time,buf,10);
if(strlen(buf)>2)
/* 如果已占用CPU的时间是三位数的,则调整其显示的位置*/
outtextxy(cpui_left+cpui_width*2/3+44-8,cpui_top+i++*cpui_height+4,buf);
else
outtextxy(cpui_left+cpui_width*2/3+44,cpui_top+i++*cpui_height+4,buf);
/* 将用户进程已输出的行数转换成字符串的形式存放在buf中,然后再显示buf的内容 */
itoa(RUNNING_QUEUE->p_next->p_output_lines,buf,10);
outtextxy(cpui_left+cpui_width*2/3+44,cpui_top+i++*cpui_height+4,buf);
}
setcolor(c);
}
/****************************************************************************
所属模块: 界面输出(图形方式)
函 数 名: G_TITLE
功 能: 显示操作系统标题
入口参数: 无
出口参数: 无
调用关系: 被初始化界面程序调用
编 者: 蔡晓跃(AP0106338)
编写日期:
****************************************************************************/
G_TITLE()
{
int mx,my,i,left,top;
if(DISPLAY_MODE == TEXT)
return(0);
/* 获得当前模式的最大坐标 x,y */
mx = getmaxx();
my = getmaxy();
/* 计算显示的起始位置 */
left = (mx - 7*48)/2;
top = my/2-100;
/* 显示“多进程操作系统”字样 */
for(i=0;i<7;i++)
DRAWMAT(op+i*288,48,left+i*48,top,yellow_color);
/* 显示 multi-operating-system 字样 */
for(i=0;i<22;i++)
DRAWMAT(mos+i*72,24,(mx-22*24)/2+i*24,top+100,white_color);
/* 等待按键 */
}
/****************************************************************************
所属模块: 界面输出(图形方式)
函 数 名: GABOUT
功 能: 显示指导老师和程序编写者姓名
入口参数: 无
出口参数: 无
调用关系: 主模块调用
编 者: 蔡晓跃(AP0106338)
编写日期:
****************************************************************************/
G_ABOUT()
{
int i,j,left1,left2,left3,top,height;
if(DISPLAY_MODE == TEXT)
return(0);
cleardevice();
DISPLAY_PICTURE_OK=G_DISPLAY_BMP_PICTURE_256(800,600,"RE256.OP",0);
if(DISPLAY_PICTURE_OK==TRUE)
{
if(DISPLAY_FLASH == TRUE)
G_DISPLAY_LOAD_SYSTEM_LINE(1);
else
getch();
cleardevice();
}
/* 显示位置坐标 */
left1=100+x_left;
left2=200+x_left;
left3=350+x_left;
top = 100+y_top;
height = 50;
/* 设置ASCII码的显示格式 */
settextstyle(0,HORIZ_DIR,2);
/* 显示“指导老师” */
for(i=0;i<2;i++)
DRAWMAT(teacher+i*72,24,left1+i*24,top,white_color);
/* 显示老师姓名 */
for(i=0;i<5;i++)
DRAWMAT(lyx+i*72,24,left2+i*24,top,white_color);
/* 显示“组员” */
for(i=0;i<2;i++)
DRAWMAT(zhuyuan+i*72,24,left1+i*24,top+height,white_color);
/* 显示名字“蔡晓跃” */
for(i=0;i<3;i++)
DRAWMAT(caixiaoyue+i*72,24,left2+i*24,top+height,line_color);
setcolor(line_color);
/* 显示 “AP0106338” */
outtextxy(left3,top+height+4,"AP0106338");
/* 显示名字“陈俭” */
DRAWMAT(chen,24,left2,top+height*2,yellow_color);
DRAWMAT(chen+72,24,left2+2*24,top+height*2,yellow_color);
setcolor(yellow_color);
/* 显示“AP0006301” */
outtextxy(left3,top+height*2+4,"AP0006301");
/* 显示名字“黄瑞玉” */
for(i=0;i<3;i++)
DRAWMAT(huang+i*72,24,left2+i*24,top+height*3,yellow_color);
/* 显示“AP0006605” */
outtextxy(left3,top+height*3+4,"AP0006305");
/* 显示名字 “赖惠芳” */
for(i=0;i<3;i++)
DRAWMAT(lai+i*72,24,left2+i*24,top+height*4,yellow_color);
/* 显示“AP0006606” */
outtextxy(left3,top+height*4+4,"AP0006306");
/* 显示“编译工具:TURBO C 2.0” */
for(i=0;i<16;i++)
DRAWMAT(turbo_c+i*24,12,getmaxx()-210+i*12,top+height*6,white_color);
/* 按任意键退出 */
if(DISPLAY_PICTURE_OK==FALSE)
{ /* 如果要显示动画,则显示进度条 */
if(DISPLAY_FLASH == TRUE)
G_DISPLAY_LOAD_SYSTEM_LINE(1);
else
getch();
}
else
getch();
}
/****************************************************************************
所属模块: 界面输出(图形方式)
函 数 名:
功 能:
入口参数:
出口参数:
调用关系:
编 者: 蔡晓跃(AP0106338)
编写日期:
****************************************************************************/
G_PRINT_MECHINE()
{
return(G_DISPLAY_BMP_PICTURE_256(box_left-30+2,box_top-25,"dn256.OP",1));
}
G_DISPLAY_MECHINE_CAN_CLOSE()
{
return(G_DISPLAY_BMP_PICTURE_256(box_left-30+2+90,box_top-25+55,"shut256.OP",1));
}
G_DISPLAY_CHECK_LOAD_SYSTEM()
{
if(G_DISPLAY_BMP_PICTURE_256(box_left-30+2+90,box_top-25+35,"check.OP",1)==TRUE)
sleep(2);
if(G_DISPLAY_BMP_PICTURE_256(box_left-30+2+90,box_top-25+75,"load.OP",1)==TRUE)
sleep(2);
setfillstyle(1,black_color);
bar(cpui_left,cpui_top-5,cpui_left+cpui_width,cpui_top+cpui_height*6+15);
}
G_DISPLAY_VERSION()
{
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -