| Сервер поддерживается Центром Информационных Технологий (095) 932-9212, 932-9213, 939-0783 E-mail: info@citforum.ru

Сервер содержит море(!) аналитической информации | CIT Forum CD-ROM

### SCREEN(HW)

НАЗВАНИЕ
screen - файлы tty[01-n], color, monochrome, ega, vga - адаптер дисплея и видеомонитор.

ОПИСАНИЕ
Файлы устройств tty[01-n] обоеспечивают символьный ввод/вывод между системой, дисплеем видеомонитора и клавиатурой. Каждый из этих файлов соответствует отдельному устройству телетайпа. Хотя количество экранов ограничивается 12, точное число (n) доступных экранов зависит от объема памяти компьютера. По умолчанию экраны устанавливаются в режим терминала ASCII 80x25.

Сообщения ядра системы об ошибках записываются в /dev/console, обычно соответствующему текущему экрану. Если по умолчанию для записи системных сообщений об ошибках установлено устройство вывода /dev/console, и используемый экран переключается в графический режим, то сообщения на консоли не высвечиваются. Когда видеоустройство возвращается в текстовый режим, то высвечивается соответствующее информационное сообщение, а текст сообщений об ошибках может быть восстановлен из файла /usr/adm/messages.

Хотя все устройства tty[01-n] могут быть открыты одновременно, только одно из них может быть активным в данный момент. Активное устройство формирует свой экран и перехватывает на себя управление клавиатурой. Будет ошибкой пытаться получить доступ к файлам color, monochrome или ega, если отсутствует соответствующий адаптер или нет связанного с ним экрана в многоэкранном режиме.

Для переключения на следующий экран введите код Ctrl-PrtSc с помощью клавиш Ctrl и PrtSc. Любой активный экран может быть выбран введением кода alt-Fn, где Fn - одна из функциональных клавиш. Например, F1 относится к устройству tty01.

Режимы управления
Для изменения режима дисплея видеомонитора откройте файл, соответствующий этому режиму. Например, для переключения выдачи на дисплей CGA программа должна открыть файл /dev/color и использовать отображение селектора ioctl s, возвращенного после вызова open (команды открытия), на файловый дескриптор. Применение файлов устройств поможет обеспечить программную совместимость в будущем.

Экраны могут быть назначены различным адаптерам (в многоадаптерных системах) с использованием следующих ioctl s:

SWAPMONO
  Выбирает монохромный дисплей в качестве устройства вывода видеомонитора.
SWAPCGA
  Выбирает регулярный цветной дисплей в качестве устройства вывода видеомонитора.
SWAPEGA
  Выбирает улучшенный цветной дисплей в качестве устройства вывода видеомонитора.
SWAPVGA
  Выбирает видеографический растровый цветной дисплей в качестве устройства вывода видеомонитора.

Чтобы узнать какой тип адаптера дисплея в настоящий момент присоединен к видеомонитору, вы можете использовать ioctl(2) со следующим параметром:

CONS_CURRENT
  Возвращает тип адаптера дисплея присоединенного в текущий момент к видеомонитору: MONO, CGA, EGA или VGA.

Режимы дисплея
Для изменения видеорежима дисплея могут использоваться следующие селекторы ioctl s:

SW_B80x25
  Выбирает чернобелый текстовый режим 80x25 (MONO, CGA, EGA, VGA).
SW_C80x25
  Выбирает цветной текстовый режим 80x25 ( CGA, EGA, VGA).
SW_BG320
  Выбирает чернобелый графический режим 320x200 (CGA, EGA, VGA).
SW_CG320
  Выбирает цветной графический режим 320x200 ( CGA, EGA, VGA).
SW_BG640
  Выбирает чернобелый графический режим 640x200 ( CGA, EGA, VGA).
SW_EGAMONO80x25
  Выбирает режим EGA 7 - эмулирует поддержку, предоставляемую монохромным дисплеем.(EGA, VGA).
SW_EGAMONOAPA
  Выбирает графический режим EGA F 640x350. (EGA с мнохромным монитором.)
SW_ENHMONOAPA2
  Выбирает режим EGA F* (EGA с монохромным монитором).
SW_ENHB40x25
  Выбирает черно-белый текстовый режим 40x25 EGA. (EGA, VGA).
SW_ENHC40x25
  Выбирает цветной текстовый режим 40x25 EGA. (EGA, VGA).
SW_ENHB80x25
  Выбирает черно-белый текстовый режим 80x25 EGA. (EGA, VGA).
SW_ENHC80x25
  Выбирает цветной текстовый режим 80x25 EGA. (EGA, VGA).
SW_CG320_D
  Выбирает графический режим EGA 320x200 (режим EGA D.) (EGA, VGA).
SW_CG640_E
  Выбирает графический режим EGA 640x200 (режим EGA E.) (EGA, VGA).
SW_CG640x350
  Выбирает графический режим EGA 640X350 (режим EGA 10.) (EGA, VGA).
SW_ENH_CG640
  Выбирает графический режим EGA 10*. (EGA, VGA).
SW_MCAMODE
  Инициализирует монохромный адаптер .(MONO).
SW_VGA40x25
  Выбирает цветной режим VGA 40X25 (режим VGA 1+). (VGA).
SW_VGA80x25
  Выбирает чернобелый режим VGA 80X25 (режим VGA 2+). (VGA).
SW_VGAM80x25
  Выбирает режим VGA 7+ - эмулирует поддержку, предоставляемую монохромным дисплеем. (VGA с мнохромным монитором.)
SW_VGA11
  Выбирает графический режим VGA 640x480 (режим VGA 11.) (VGA).
SW_VGA12
  Выбирает графический режим VGA 640x480 (режим VGA 12.) (VGA).
SW_VGA13
  Выбирает графический режим VGA 320x200 (режим VGA 13.) (VGA).

Попытка переключения в режим, не соответствующий устройству дисплея, повлечет ошибку.

Получение информации о режиме дисплея
Следующие запросы ioctl() обеспечивают получение информации о текущем режиме дисплея:

CONS_GET
  Возвращает текущий режим дисплея, установленный для текущего адаптера дисплея. (Все типы.)
CGA_GET
  Возвращает текущий режим дисплея, установленный для графического адаптера дисплея. (Только CGA.)
EGA_GET
  Возвращает текущий режим дисплея, установленный для улучшенного графического адаптера дисплея. (Только EGA.)
MCA_GET
  Возвращает текущий режим дисплея, установленный для монохромного адаптера дисплея. (Только MONO.)
VGA_GET
  Возвращает текущий режим дисплея, установленный для видеографического растрового адаптера дисплея. (Только VGA.)

Режимы отображения памяти
Процедура ioctl(2) используется для отображения памяти дисплея различных устройств в область данных пользователя. На 20286-х машинах ioctl() возвращает селектор памяти дисплея. Макрос sotofar используется для создания дальнего указателя этого селектора так, чтобы можно было работать с памятью дисплея. Макрос sotofar находится в файле /usr/include/sys/sysmacros.h. На 80386-х машинах ioctl() возвращает символьный указатель (char *).

За детальной информацией о различных дисплеях, адаптерах и контроллерах обращайтесь к документации по аппаратной части.

Для отображения памяти дисплея можно использовать следующие запросы ioctl():

MAPCONS
  Отображает память дисплея адаптера, используемого в текущий момент, в область пользовательских данных. (Все типы адаптеров.)
MAPMONO
  Отображает память дисплея монохромного адаптера, используемого в текущий момент, в область пользовательских данных. (Только MONO.)
MAPCGA
  Отображает память дисплея цветного графического адаптера, используемого в текущий момент, в область пользовательских данных. (Только CGA.)
MAPEGA
  Отображает память дисплея улучшенного графического адаптера, используемого в текущий момент, в область пользовательских данных. (Только EGA.)
MAPVGA
  Отображает память дисплея видеографического растрового адаптера, используемого в текущий момент, в область пользовательских данных. (Только VGA.)

Например, для получения указателя на начало области пользовательских данных, связанной с памятью дисплея адаптера CGA можно использовать следующий код:

        char far *dp;
        int selector;
              .
              .
              .
        fd=open("/dev/color",O_WRONLY);
        selector=ioctl(fd,MAPCGA,0);
        dp=sotofar(selector,0);
              .
              .
              .

Обратите внимание, что, когда память дисплея отображается в пльзовательское пространство, регистры начального адреса адаптера не устанавливаются. Этот начальный адрес может быть установлен двумя способами, так чтобы начальный адрес памяти дисплея соответствовал верхнему левому углу экрана:

1. Переключите режим с помощью ioctl() ("переключение" может выполняться и на уже установленный режим). Смотрите подраздел "Режимы дисплея" в данном разделе.
2. Измените начальный адрес с помощью in-on-port/out-on-port (операций через порты) ioctl().

Эти операции могут использоваться также для определения текущего значения регистра начального адреса, а затем для установки указателя на заданное смещение в отображенном пространстве данных.

Порт ввода/вывода графического адаптера
Вы можете использовать ioctl(2) для записи байта в порт графического адаптера или чтения байта из этого порта. Параметр arg функции ioctl использует следующую структуру данных io_arg:

        struct port_io_arg {
          struct port_io_struct args[4];
        };

Как показано выше структура io_arg указывает на массив из четырех структур данных port_io. Структура port_io имеет следующий формат:

        struct port_io_struct {
           char  dir; /*direction flag (in vs. out)*/
           unsigned_int port; /*port address*/
           char data; /*byte of data*/
        };

Для одного вызова ioctl вы можете задать одну, две, три или четыре структуры port_io_struct. Величина dir может принимать значение IN_ON_PORT для задания чтения байта из порта графического адаптера или значение OUT_ON_PORT для записи байта в этот порт. Величина port является целым числом, задающим адрес нужного порта графического адаптера. Величина data содержит байт, принимаемый из порта или посылаемый в этот порт.

Если вы не используете ни одну из структур port_io, присвойте величине port нулевое значение и опустите неиспользуемые структуры в конце массива. Адреса и назначение портов различных адаптеров смотрите в документации по аппаратной части.

Для работы с портом графического адаптера вы можете использовать следующие команды ioctl(2):

MGAIO
  Чтение или запись байта в порт монохромного адаптера. (Только MONO.)
CGAIO
  Чтение или запись байта в порт цветного графического адаптера. (Только CGA.)
EGAIO
  Чтение или запись байта в порт улучшенного графического адаптера. (Только EGA.)
VGAIO
  Чтение или запись байта в порт видеографического растрового адаптера. (Только VGA.)
CONSIO
  Чтение или запись байта в порт текущего графического адаптера. (Все типы адаптеров.)

Для чтения байта из любого порта графического адаптера присвойте величине dir значение IN_ON_PORT, а величине port - адрес порта графического адаптера. Считанный байт будет возвращен в переменную data.

Для записи байта присвойте величине dir значение OUT_ON_PORT, величине port - адрес порта графического адаптера, а величине data - байт, который вы хотите записать в порт.

Функциональные клавиши
ioctl(2) может использоваться для задания или для получения текущего назначения функциональных клавиш. При этом параметр arg функции ioctl использует следующую структуру данных fkeyarg:

       struct fkeyarg {
          unassigned int keynum;
          char keydef [MAXFK];
            /*Comes from
          char flen; ioctl.h via comcrt.h*/
       }

Для получения или назначения определений функциональных клавиш вы можете использовать следующие запросы ioctl(2):

GETKEY
  Получает текущее определение функциональной клавиши. Номер этой клавиши должен быть записан в keynum. Строка, приписанная данной клавише, будет возвращена в keydef, а длина этой строки - в flen, когда ioctl завершит свою работу.
SETKEY
  Приписывает данную строку функциональной клавише. Номер этой клавиши должен быть записан в keynum, а длина строки (количество символов) - в переменную flen.

Экранные управляющие последовательности
Следующие символьные последовательности определяются стандартом ANSI X3.64-1979 и могут использоваться для управления и модификации экрана дисплея. Для достижения желаемого эффекта каждое Pn нужно заменить соответствующим десятичным кодом ASCII. Последняя колонка содержит коды termcap(M), где "n/a" означает "не применяется".

Использование в управляющей последовательности 7- и 8-разрядных символов является допустимым для каждого определенного действия. Например, команда ANSI ED может быть вызвана с помощью последовательности "ESC[ Pn j" (0x1b-0x5b-Pn-0x4a, 7-разрядные символы) или последовательности "CSI Pn j" (0x9b-Pn-0x4n, 8-разрядные символы).

Обозначение ISO | Последовательность | Действие | Код termcap
--- | --- | --- | ---
ED (Erase in Display) | CSI pN J | Очищает весь дисплей или его часть. Pn=0: очистка с активной позиции до конца дисплея. Pn=1: очистка от начала дисплея до активной позиции. Pn=2: очистка всего дисплея. | cd
EL (Erase in Line) | CSI Pn K | Очищает всю строку или ее часть. Pn=0: очистка с активной позиции до конца строки. Pn=1: очистка от начала строки до активной позиции. Pn=2: очистка всей строки. | ce
ECH (Erase Character) | CSI Pn X | Стирает символы Pn. n/a
CBT (Cursor Backward Tabulation) | CSI Pn Z | Передвигает активную позицию назад на Pn табуляций. | bt
SU (Scroll Up) | CSI Pn S | Прокручивает экран вверх на Pn строк, вставляя снизу пустые строки. | sf
SD (Scroll Down) | CSI Pn T | Прокручивает экран вниз на Pn строк, вставляя сверху пустые строки. | sr
CUP (Cursor Position) | CSI P1;P2 H | Перемещает активную позицию на координату P1 по вертикали и P2 по горизонтали. | cm
HVP (Horizontal & Vertica Position) | CSI P1;P2 f | Перемещает активную позицию на координату P1 по вертикали и l P2 по горизонтали. | n/a
CUU (Cursor Up) | CSI Pn A | Перемещает активную позицию на Pn строк вверх. | up(ka)
CUD (Cursor Down) | CSI Pn B | Перемещает активную позицию на Pn строк вниз. | do(kd)
CUF (Cursor Forward) | CSI Pn C | Перемещает активную позицию на Pn позиций вправо. | nd(kr)
CUB (Cursor Backward) | CSI Pn D | Перемещает активную позицию на Pn позиций назад. | bs(kl)
HPA (Horizontal Position Absolute) | CSI Pn ` | Перемещает активную позицию на колонку Pn. | n/a
HPR (Horizontal Position Relative) | CSI Pn a | Перемещает активную позицию на Pn символов вправо. | n/a
VPA (Vertical Position Absolute) | CSI Pn d | Перемещает активную позицию на строку Pn. | n/a
VPR (Vertical Position Relative) | CSI Pn e | Перемещает активную позицию на Pn строк вниз. | n/a
IL (Insert Line) | CSI Pn L | Вставляет Pn новых пустых строк. | al
ICH (Insert Character) | CSI Pn @ | Вставляет Pn пустых позиций для Pn символов. | ic
DL (Delete Line) | CSI Pn M | Удаляет Pn строк. | dl
DCH (Delete Character) | CSI Pn P | Удаляет Pn символов. | dc
CPL (Cursor to Previous Line) | CSI Pn F | Перемещает активную позицию на Pn строк вверх и на начало строки. | n/a
CNL (Cursor to Next Line) | CSI Pn E | Перемещает активную позицию на Pn строк вниз и на начало строки. | n/a
CGR (Select Graphic Rendition) | CSI 0 m | Сброс ярких, мигающих, пустых, подчеркнутых и инвертированных символов. Цвет: восстанавливает нормальные установки цветов. | n/a
SGR | CSI 1 m | Устанавливает атрибут яркости. Цвет: устанавливает атрибут интенсивности (меняет color на lt_color). | n/a
SGR | CSI 4 m | Устанавливает подчеркивание. Цвет: без изменения. | n/a
SGR | CSI 5 m | Устанавливает мигание. Цвет: меняет фон с lt_color на color; символ мигает. | n/a
SGR | CSI 7 m | Устанавливает инвертирование. Цвет: инвертирует выбранные цвета. | so
SGR | CSI 10 m | Выбирает первичный шрифт. | GE
SGR | CSI 11 m | Выбирает первый альтернативный шрифт. Разрешает высвечивание символов ASCII с кодами, меньшими 32, в виде символов, зашитых в ПЗУ. | n/a
SGR | CSI 12 m | Выбирает второй альтернативный шрифт. Перед выдачей в виде символов, зашитых в ПЗУ, переключает старший бит расширенного кода ASCII. | GS
SGR | ESC[ 4 m | Устанавливает подчеркивание. Цвет: без изменения. | n/a
SGR | CSI3 C m | Цвет: выбор цвета символа C (см. таблицу 1 ниже). | n/a
SGR | CSI4 C m | Цвет: выбор цвета фона C (см. таблицу 1 ниже). | n/a
SGR | SCI 8 m | Устанавливает мигание. | n/a

Следующие коды цветов и последовательности определены Международной организацией по стандартизации ISO DP 6429.

Таблица 1
С | Цвет
--- | ---
0 | Черный
1 | Красный
2 | Зеленый
3 | Желтый
4 | Синий
5 | Маджента
6 | Циан
7 | Белый

Обозначение ISO | Последовательность | Действие | Код termcap
--- | --- | --- | ---
SM (Set Mode) | ESC[2h | Блокировка клавиатуры. Игнорирует ввод с клавиатуры, пока она не будет разблокирована. Символы не сохраняются. | n/a
MC (Media Copy) | ESC[2i | Содержимое экрана пересылается на главный адаптер. Текущее содержимое экрана посылается прикладной программе. | n/a
RM (Reset Mode) | ESC[2l | Снимает блокировку клавиатуры и восстанавливает прием ввода с клавиатуры. | n/a

Следующие коды цветов и последовательности составляют дополнительные управляющие последовательности.

Таблица 2
Сn | Цвет | Cn | Цвет
--- | --- | --- | ---
0 | Черный | 8 | Серый
1 | Красный | 9 | С.-голубой
2 | Зеленый | 10 | С.-зеленый
3 | Желтый | 11 | С.-циановый
4 | Синий | 12 | С.-красный
5 | Маджента | 13 | C. маджента
6 | Циан | 14 | Желтый
7 | Белый | 15 | C.-белый

Обозначение ISO | Последовательность | Действие | Код termcap
--- | --- | --- | ---
n/a | CSI=cA | Устанавливает цвет бордюра с. c - десятичное значение, выбираемое из таблицы 2, приведенной выше. (Эта последовательность под- держивается не на всякой аппаратуре.) | n/a
n/a | CSI=p;dB | Задает параметры "звонка" p и d в десятичном виде. p - период звучания в единицах 840.3 наносекунд, а d - длительность звучания в единицах 100 миллисекунд. | n/a
n/a | CSI=s;eC | Устанавливает вид курсора с начальной линией s и последней линией e. | n/a
n/a | CSI=xD | Включает или выключает (x=1 или 0) интенсивность цвета фона. | n/a
n/a | CSI=xE | Устанавливает или сбрасывает (x=1 или 0) бит мигания вместо бита интенсивности фона контроллера дисплея 6845. | n/a
n/a | CSI=cF | Устанавливает нормальный цвет символов с.(с - десятичное число, выбираемое из таблицы 2.) | n/a
n/a | CSI=c G | Устанавливает нормальный фон. (См. таблицу 2.) | n/a
n/a | CSI=c H | Устанавливает инвертированный цвет символов. (См. таблицу 2.) | n/a
n/a | CSI=c I | Устанавливает инвертированный цвет фона. (См. таблицу 2.) | n/a
n/a | CSI=c J | Устанавливает цвет символов в графике. (См. таблицу 2.) | n/a
n/a | CSI=c K | Устанавливает цвет фона в графике. (См. таблицу 2.) | n/a
n/a | ESC[Png | Обеспечивает доступ к альтернативному графическому набору символов, который не совпадает с набором "графического режима". Смотрите документацию по десятичным/символьным кодам (Pn) и возможным высвечиваемым символам. | n/a
n/a | ESCQFn'string' | Приписывает строку string функциональной клавише Fn. Ограничителями строки ' и ' могут служит любые символы, не встречающиеся в этой строке. Функциональные клавиши нумеруются от 0 до 9 (F1=0, F2=1 и т.д.) | n/a
n/a | ESC[Pnz CSIPnz | Pn должно быть равно номеру экрана, на который осуществляется переключение. Срабатывает только в том случае, если экран был сконфигурирован во время загрузки, в противном случае никакого эффекта не будет. | n/a

ФАЙЛЫ

    /dev/console
    /dev/tty[02-n]
    /dev/color
    /dev/monochrome
    /dev/ega
    /dev/vga

СМ. ТАКЖЕ
console(5), ioctl(2), keyboard(HW), keymap(5), mapkey(8), mapchan(5), multiscreen(5), setcolor(1), stty(1), systty(5), vidi(1), termcap(5), tty(5)

Comments: info@citmgu.ru Designed by Andrey Novikov Copyright © CIT