Добавил:
Mymnan
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:АВМиС - Лабы / 2. видеоадаптер / laba2
.cpp#include <dos.h>
#include <bios.h>
#include <conio.h>
struct address //структура для переопределения адреса таблицы знакогенератора
{
char far *p;
};
struct address far * int_1f = (struct address far *)0x0000007cL; //установление указателя на адрес
//таблицы знакогенератора в таблице векторов прерывания
char far * old_1f;
char *pic = "\x80"; // ASCII код 128 – т.е. элемент по смещению 0
char table[] = {
0x18, 0x18, 0x18, 0xFF, 0xFF, 0x18, 0x18, 0x18
}; // переопределенный символ
void set_mode (int mode) //установление заданного режима
{
_AH = 0x00;
_AL = mode;
geninterrupt(0x10);
}
void goto_xy(int x, int y) // переход на место с координатами х и у
{
_AH = 0x02;
_DH = y;
_DL = x;
geninterrupt(0x10);
}
void print_symvol(char *str, char atr) // вывод символа с заданными атрибутами
{
_AH = 0x09;
_AL = *str;
_CX = 1;
_BL = atr;
geninterrupt(0x10);
}
main()
{
char *ptr;
set_mode(5); // установление 5 режима
disable();
old_1f = int_1f -> p; // сохранение старого указателя на таблицу знакогенератора
int_1f -> p = (char far *)table; // установка указателя в таблице векторов
//прерывания на пользовательскую таблицу
enable();
goto_xy(10,10); // переход на заданную позицию
ptr = pic; // инициализация символа
print_symvol(ptr, 3); // вывод символа
int_1f -> p = old_1f; // восстановление старого значения указателя
getch();
return 0;
}
Соседние файлы в папке 2. видеоадаптер