Отправляет email-рассылки с помощью сервиса Sendsay

Все о Паскале

  Все выпуски  

Все о Паскале


Информационный Канал Subscribe.Ru


Лучшие статьи сайта о паскале!
Подисчиков:  3
Выпуск номер: 2
Сегодня первый выпуск рассылки, не знаю будет ли читать ее кроме меня.
Сегодня в нашем выпуске:
1. ) Работе с экраном в текстовом режиме и что использовать для крашения программ.

1. ) аботе с экраном в текстовом режиме и что использовать для крашения программ.


Текстовый режим экрана, структура видеопамяти.

Текстовые режимы были первыми, появившимися на экранах компьютеров. В свое время даже существовали мониторы вообще не имевшие возможности отображать графическую информацию (алфавитно-цифровые терминалы). В применении к IBM РС-совместимым компьютерам, о текстовых режимах можно говорить как о наиболее общих для всех моделей. Как следствие изучение их представляет достаточный интерес.

С другой стороны, несмотря на свою простоту, текстовые режимы в IBM PC (под MS-DOS) обладают достаточно широкими возможностями, в частности, являются оконно-ориентированными. В данном контексте изучение и использование таких режимов может быть полезным с методических целей: без особой технической сложности в них реализуются оконные интерфейсы и, как следствие программы, управляемые событиями обретают наглядность.

Наиболее часто используемым режимом является режим 03 и его модификации. Экран в данном режиме разделен на 25 строк и 80 столбцов, что позволяет адресовать 2000 ячеек, называемых знакоместами. На каждом знакоместе может быть отображен один из 256 символов, образы которых содержатся в таблицах знакогенератора. Каждый символ таким образом кодируется одним байтом. Как правило кодирование производится в соответствии с одной из таблиц ASCII. Преобразование однобайтового кода символа в его изображение производится аппаратно.

Коды символов, отображаемых в каждый момент на экране хранятся в видеопамяти. Видеопамять в текстовом режиме с точки зрения программиста представляет собой часть адресного пространства ЦВМ, начинающуюся с адреса B800:000 и кончающуюся B800:7FFF. Так как на описание одного знакоместа требуется 2 байта (код символа и атрибут) существует возможность хранить (и последовательно отображать на экране) до 8 страниц (отдельных изображений).

Как упоминалось выше содержимое каждого знакоместа описывается не только кодом символа, но и атрибутом. Атрибут характеризует цвет, которым отображаются символ и фон за ним. В видеопамяти коды символов располагаются по четным адресам, а атрибуты - по нечетным.

Вывод символа на экран как следствие вышесказанного производится записью пары байт в некоторое место видеопамяти, определяемое активной страницей и положением знакоместа на ней. Делается это либо с помощью прямого обращения либо с использованием функций BIOS или DOS.

Такого рода вывод достаточно утомителен с точки зрения высокоуровневого программирования; вследствие этого, как уже упоминалось в ЯП высокого уровня включают механизмы ввода-выода.

Цвета и окна,

или сделаем программы красивыми

Стандартно Pascal предполагает работу с текстовым экраном с помощью процедур и функций модуля CRT. Однако не запрещается работа с видеопамятью напрямую. Один из вариантов прямых обращений к видеопамяти реализован в модуле Direct_V. Вторым способом является размещение двумерного массива по абсолютному адресу начала видеопамяти. Главным недостатком прямого доступа является отсутствие каких бы то ни было функций работы с окнами, позиционирования курсора и т.п., который приходится реализовывать непосредственно программисту. С другой стороны, программист может реализовать те же функции более эффективно, чем программисты Borland International (в настоящее время - часть Inprise Corporation).

Модуль CRT содержит следующие процедуры и функции для работы с текстовым экраном (более подробную информацию можно получить из справочной системы, int-файла или исходного текста модуля).

procedure AssignCrt(var F: Text); ассоциирует текстовый файл с экраном
procedure TextMode(Mode: Integer); устанавливает текстовый режим с соответствующим номером
procedure Window(X1,Y1,X2,Y2: Byte); организует окно вывода в абсолютных координатах
procedure GotoXY(X,Y: Byte); позиционирует курсор в локальных координатах
function WhereX: Byte; возвращает Х-координату курсора
function WhereY: Byte;  
procedure ClrScr; очищает текущее окно
procedure ClrEol; очищает строку от курсора до границы окна
procedure InsLine; вставляет строку в окно (в позиции курсора)
procedure DelLine; удаляет строку
procedure TextColor(Color: Byte); устанавливает цвет выводимых символов
procedure TextBackground(Color: Byte); то же для фона
procedure LowVideo; уменьшает яркость текущих атрибутов
procedure HighVideo; увеличивает яркость текущих атрибутов
procedure NormVideo; восстанавливает первоначальные атрибуты вывода

Приведенные процедуры и функции позволяют организовывать различные текстовые интерфейсы, в том числе и многооконные. Главным достоинством данного модуля является его полная согласованность с процедурами Write(ln) и Read(ln), что позволяет не заботится о выводе только в пределах окна и подобных им.


Все о 
паскале, множество доков, исходники, 15(!) компиляторов и многое другое

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу


В избранное