Лабораторная работа: Организация ввода-вывода
{
d=getch();
printf("\nРасширенный код: 0, %i = '%c''', d, d);
}
else
printf(["\nAscci-код: %i = '%c''', с, с);
if( !getch())
getch();
}
Вопрос. Как напечатать на экране графическое представление управляющих символов.
Ответ: Печать управляющих символов реализует их функциональное назначение. Например, символ Tab, имеющий код '\t'=9, равносилен нескольким пробелам. Так действуют все функции вывода. Для графического представления подобных символов нужно поместить их код непосредственно в видеобуфер.
Для цветного графического адаптера видеобуфер начинается с абсолютного адреса 0хВ80001. На символ отводится 2 байта: первый - для asccii-кода, второй - для атрибутов. Этот метод называется отображением в память. Строки экрана располагаются в буфере последовательно.
#include <conio.h>
#include <stdio.h>
#include <dos.h>
void main()
{
char *pc = (char *)0xB80000001 + 2*( 80*(wherey()-l) +
wherex()-l);
pc[0] = '\t';
pc[1] = 7; // Обычный атрибут
//лучше использовать функцию записи по указанному
//адресу ОЗУ
//poke(0xB800, 2*( 80*(wherey()-l) + wherex() -l), 0x700 +
//'А');
// числа типа int записываются в ОЗУ наоборот : две
//старшие 16-е цифры - в младшем (правом) байте,
//младшие цифры - в старшем (левом) байте
if(!getch()) getch();