Справочник программиста на персональном компьютере фирмы IBM. Вывод на терминал - Установка/проверка режима дисплея

ОГЛАВЛЕНИЕ


     4.1.2 Установка/проверка режима дисплея.


   Монохромный адаптер поддерживает один режим терминала, цветной
графический - семь, PCjr -  десять,  а EGA - двенадцать.  Система
PCjr более гибкая, чем монохромный или цветной адаптеры, посколь-
ку она предоставляет  широкий  выбор  цветов  в режимах с двумя и
четырьмя  цветами, а также серые тени в черно-белом режиме.   EGA
еще более сложен,  поддерживая  палетту  из 64 цветов, графику на
монохромном дисплее и вывод в 43 строки.  Ниже приведен  перечень
различных режимов:

   Номер         Режим                                       адаптеры

    0        40*25 (320*200) B&W алфавитноцифровой         цветной, PCjr, EGA
    1        40*25 (320*200) цветной алфавитноцифровой     цветной, PCjr, EGA
    2        80*25 (640*200) B&W алфавитноцифровой         цветной, PCjr, EGA
    3        80*25 (640*200) цветной алфавитноцифровой     цветной, PCjr, EGA
    4        320*200 4-цветная графика                     цветной, PCjr, EGA
    5        320*200 B&W графика (4 тени на PCjr)          цветной, PCjr, EGA
    6        640*200 B&W графика                           цветной, PCjr, EGA
    7        80*25 (720*350) B&W алфавитноцифровой         монохромный, EGA
    8        160*200 16-цветный графика                    PCjr
    9        320*200 16-цветный графика                    PCjr
    A        640*200 4-цветный графика                     PCjr
    B        зарезервирован для EGA
    C        зарезервирован для EGA
    D        320*200 16-цветный графика                    EGA
    E        640*200 16-цветный графика                    EGA
    F        640*350 4-цветная графика на монохромном      EGA
   10        640*350 4- или 16-цветная графика             EGA

   EGA  разрешает иметь 8 страниц в режиме 7 - стандартном монох-
ромном текстовом режиме. Режимы 0-6 полностью совместимы, исполь-
зуя память одинаковым образом.  При условии, что переключатели на
EGA установлены для работы  с  улучшенным  цветным дисплеем фирмы
IBM,  традиционные текстовые режимы выводятся с высоким  разреше-
нием, используя рисунок  символов,  состоящий из 8*14 точек, а не
обычные 8*8.
   BIOS  хранит  однобайтную переменную по  адресу  0040:0049,  в
которой  содержится  номер  текущего   режима.   Байт  по  адресу
0040:004A дает число символов в строке в текстовом режиме.

   Высокий уровень.


   Бейсик  использует  операторы SCREEN и  WIDTH  для  управления
режимом экрана. PCjr  использует  эти  операторы несколько другим
способом,  чем монохромный и цветной адаптеры, и это будет обсуж-
даться ниже. Один оператор SCREEN устанавливает режим для цветно-
го  адаптера.   За оператором стоит номер  кода,  устанавливающий
разрешение, где:

   0   текстовый режим
   1   графический режим среднего разрешения
   2   графический режим высокого разрешения

SCREEN 1  устанавливает  графический  режим  среднего разрешения.
Второй параметр включает и выключает цвет. Этот параметр не имеет
смысла для режима высокого  разрешения  на цветном адаптере, пос-
кольку разрешен только черно-белый режим. Для текстовых режимов 0
в качестве  второго  параметра  выключает  цвет,  а 1 - включает.
Оператор  SCREEN  0,0 устанавливает текстовый черно-белый  режим.
Для графического режима ситуация обратная: 0 - включает цвет, а 1
- выключает.  Поэтому оператор SCREEN 1,1 устанавливает черно-бе-
лый графический режим среднего разрешения.
   Все режимы первоначально показываются  черно-белыми.  Оператор
COLOR  (см.   [4.1.3]) должен быть использован,  чтобы  закрасить
экран фоновым цветом. В графическом режиме одного оператора COLOR
достаточно,  чтобы изменить весь фон на указанный цвет.   Но  для
текстового режима Вы  должны  после  оператора COLOR использовать
оператор CLS.
   В  текстовых  режимах в строке может быть 40 или 80  символов.
Для установки требуемого числа  символов  в строке надо использо-
вать оператор WIDTH.  WIDTH 40 дает 40 символов в строке, а WIDTH
80 - 80. Другие значения недопустимы. Если оператор WIDTH исполь-
зуется в графическом режиме (SCREEN 1 или SCREEN 2), то WIDTH  40
переводит экран в режим среднего разрешения, а WIDTH 80 - в режим
высокого разрешения. Вот несколько примеров:

100 SCREEN 0,1: WIDTH 40  'цветной текстовый режим с 40 символами

100 SCREEN 0,1: WIDTH 40  'цветной дисплей как монохромный

100 SCREEN 0,1: WIDTH 40  'цветная графика среднего разрешения
 .
 .
500 WIDTH 80              'переводим в режим высокого разрешения

   Монохромный монитор может быть переведен в режим 40 символов в
строке операторами SCREEN 0: WIDTH 40.  Для восстановления режима
с  80  символами введите WIDTH 80.  В режиме с 40  символами  они
сохраняют свою обычную ширину, поэтому будет использоваться толь-
ко левая часть экрана.  Строка переносится после 40-го столбца  и
невозможно поместить курсор  в  правую  половину экрана с помощью
оператора  LOCATE.  CLS чистит только левую часть экрана.  Трудно
представить программу, которая  использовала  бы это свойство, но
оно  действительно  позволяет программе принимать  ввод  (скажем,
через оператор INPUT), в  то  время  как  пользователь продолжает
печатать в левой половине экрана, оставляя правую половину экрана
для возможной корректировки  вводимой  информации. При этом любой
вывод  в правую половину экрана возможен только прямого обращения
к памяти дисплея, как объяснено в [4.3.1].
   PCjr использует в Бейсике 7 номеров режимов:

   Номер                   Режим

     0       текстовый режим, ширина может быть 40 или 80
     1       4-цветная графика среднего разрешения
     2       2-цветная графика высокого разрешения
     3       16-цветная графика низкого разрешения
     4       4-цветный режим среднего разрешения
     5       16-цветный режим среднего разрешения
     6       4-цветная режим высокого разрешения

   Последние  четыре режима требуют дискетты с Бейсиком.   Размер
страницы определяет количество памяти, требуемое для одного экра-
на (дисплейные страницы обсуждаются в [4.5.3]).  Программа должна
отвести соответствующее  количество памяти перед установкой режи-
ма.   Это делается оператором CLEAR.  За оператором CLEAR  должны
следовать три  числа,  определяющие  отводимую  память, третье из
этих чисел устанавливает размер видеобуфера (первые два параметра
обсуждаются в  [1.3.1]).   Например,  размер для видеобуфера 16K,
устанавливаемый  по умолчанию, выделяется командой CLEAR ,,16384.
К сожалению, размер видеобуфера указывается  в байтах, поэтому он
не  равен  круглому числу типа 4000 или 32000, а равен  4096  или
32768.  Помните, что 2K =  2^11,  4K  = 2^12, 16K = 2^14, а 32K =
2^15.  Для выделения трех страниц по 16K, введите CLEAR ,,3*2^14.
Этот оператор должен помещаться  в  самом  начале программы, пос-
кольку при использовании оператора CLEAR все переменные  очищают-
ся. Отметим также, что при  создании нескольких страниц, страница
0 начинается с младших адресов памяти.
   К  моменту  выхода этой книги Бейсик не поддерживает  дополни-
тельные режимы терминала EGA. В [4.3.3] приведена подпрограмма на
машинном языке, которая позволит Вам установить эти режимы.