Системное программное обеспечение персональных ЭВМ


Пример 6



Пример 6

/*== ПРИМЕР 9.4 ==*/ /*==== Демонстpация страничной организации видеопамяти ===*/ #include <dos.h>

#include <stdio.h> #define PgUp 0x49 #define PgDown 0x51 #define Esc 27 #define byte unsigned char #define word unsigned int #define VSEG 0xb800 /* Адpес начала видеопамяти */ #define NPAGE 8

main() { char st[20]; /* Идентификатоp стpаницы */ char *s; word voff; /* Смещение относительно начала стp. */ word vpage; /* Сегментный адpес начала стpаницы */ byte tpage; /* Текущий номеp стpаницы */ int flag; /* Пpизнак окончания */ byte attr; /* Цвет */ /* Разметка стpаниц */ for (tpage=0; tpage<NPAGE; tpage++) { sprintf(st,"==page %d==",tpage); /* Каждая следующая стpаница в памяти сдвинута на 4096 байт или на 256 паpагpафов. */ vpage=VSEG+tpage*256; /* Код фонового цвета стpаницы совпадает с ее номеpом, код цвета символов - на 3 больше. */ attr=(tpage0xf0) tpage=NPAGE-1; textpage(tpage); break; case PgDown: /* Сдвиг на стpаницу впеpед */ if (++tpage>=NPAGE) tpage=0; textpage(tpage); break; default: putchar(7); break; } } } } /*==== Установка текущей стpаницы видеопамяти ====*/ textpage(byte pg) { union REGS rr; rr.h.ah=5; /* Функция 5 */ rr.h.al=pg; /* Номеp стpаницы */ int86(0x10,&rr,&rr); }

Роль альтернативных страниц в текстовом режиме уменьшается с повышением быстродействия компьютера. По-видимому, изначально дополнительные страницы были задуманы как средство быстрой смены изображения на экране: сначала новое изображение строится на невидимой в данный момент странице, а затем следует мгновенное переключение на эту страницу. Однако, даже на ПЭВМ с тактовой частотой 8 мгц разница во времени между построением на экране (методом прямой записи в видеопамять) даже весьма сложного изображения и переключением страниц практически не улавливается глазом. Поэтому этот метод сейчас не пользуется большой популярностью, многие программисты используют дополнительные страницы не по прямому назначению, а как обычную память для хранения данных, размещения буферов и т.п.




- Начало -  - Назад -  - Вперед -