Отображение диаграмм на экране дисплея.
Если вы сохранили построенную диаграмму в файле, то всегда можете повторно получить изображение данной диаграммы. Для этой цели служит программа SHOW, описанная в данном разделе. Программа выводит диаграмму, находящуюся в файле, имя файла задается в виде аргумента команды. Например, чтобы вывести диаграмму, находящуюся в файле backlog, необходимо ввести команду
show backlog
Программа show использует функцию load_pic(),
предназначенную для изображения диаграмм на экране. (Вы также
можете использовать эту программу для отображения на экране
дисплея других графических образов, предварительно созданных и
записанных в файл.)
/* Простейшая программа восстановления графических образов */
#include "stdio.h"
#include "dos.h"
void load_pic(),mode(),palette(),goto_xy();
main(argc,argv)
int argc;
char *argv[];
if (argc != 2)
printf(" Обращение: показать <имя файла>");
exit(1);
mode(4);
palette(0);
load_pic(argv[1]);
getch();
mode(3);
/* загрузка графического изображения */
void load_pic(fname)
char *fname;
FILE *fp; register int i,j;
char far *ptr = (char far *) 0xB8000000; /* указатель на CGA память */
char far *temp;
unsigned char buf[14][80]; /* для размещения содержимого
экрана */
if (!(fp=fopen(fname,"rb")))
goto_xy(0,0);
printf(" невозможно открыть файл \n");
return;
/* загрузка изображения из файла */
for (i=0;i<8152;i++)
*ptr = getc(fp); /* четный байт */
*(ptr+8152) = getc(fp); /* нечетный байт */
ptr++;
fclose(fp);
/* установка видеорежима */
void mode(mode_code)
int mode_code;
union REGS r;
r.h.al = mode_code;
r.h.ah = 0;
int86(0x10,&r,&r);
/* установка цветов диаграмм */
void palette(pnum)
int pnum;
union REGS r;
r.h.bh = 1; /* код 4 режима */
r.h.bl = pnum;
r.h.ah = 11; /* установка функции цвета */
int86(0x10,&r,&r);
/* установка курсора в координаты x,y */
void goto_xy(x,y)
int x,y;
union REGS r;
r.h.ah = 2; /* функция адресации курсора */
r.h.dl = y; /* горизонтальная координата */
r.h.dh = x; /* вертикальная координата */
r.h.bh = 0; /* видеостраница */
int86(0x10,&r,&r);