Открыть сервис

Драйвер ANSI.SYS

ANSI.SYS — это драйвер, входивший в состав операционных систем MS-DOS и PC DOS, предназначенный для расширенного управления выводом текста на консоль. Он обеспечивал программную поддержку ANSI-escape-последовательностей, позволяя изменять цвета, стили шрифта, позиционирование курсора и очистку экрана.

История

Драйвер ANSI.SYS был разработан компанией Microsoft и впервые включён в состав MS-DOS версии 2.0 (1983 год). Его появление было связано с необходимостью стандартизации управления терминалами в среде IBM PC. До этого различные производители аппаратного обеспечения использовали собственные наборы команд для управления дисплеем, что затрудняло разработку переносимого программного обеспечения.

В основу ANSI.SYS лёг стандарт ANSI X3.64 (позднее — ECMA-48), описывающий escape-последовательности для управления текстовыми терминалами. Однако драйвер реализовывал лишь подмножество этих последовательностей, достаточное для базовых операций с текстом и цветом. В более поздних версиях MS-DOS (начиная с 3.3) функциональность драйвера была расширена, в частности, добавлена поддержка 16 цветов фона и 16 цветов текста (вместо 8), а также возможность задания параметров через конфигурационный файл CONFIG.SYS.

С выходом Windows 95 и последующих версий, которые использовали собственный графический интерфейс, необходимость в ANSI.SYS снизилась. Однако драйзер оставался доступен в режиме совместимости с MS-DOS и в некоторых эмуляторах терминала. В современных операционных системах (Windows NT, Linux, macOS) поддержка ANSI-последовательностей реализована на уровне эмулятора терминала или консоли, а не через отдельный драйвер.

Устройство и принцип работы

ANSI.SYS загружался как драйвер устройства в файле CONFIG.SYS с помощью директивы DEVICE или DEVICEHIGH. После загрузки он перехватывал системные вызовы, связанные с выводом символов на экран (INT 29h, функции BIOS INT 10h), и обрабатывал escape-последовательности в потоке вывода.

Escape-последовательности

Escape-последовательность начинается с символа ESC (ASCII 27, шестнадцатеричное 1Bh) и за ним следует открывающая квадратная скобка [ (CSIControl Sequence Introducer). Далее идут один или несколько параметров, разделённых точкой с запятой, и завершающая буква, определяющая команду. Основные типы команд:

  • Управление курсором: перемещение вверх/вниз/влево/вправо (A, B, C, D), установка абсолютной позиции (H, f), сохранение и восстановление позиции (s, u).
  • Очистка экрана: очистка всего экрана (2J), очистка от курсора до конца строки (K).
  • Управление цветом: установка цвета текста (30-37), цвета фона (40-47), атрибутов (0 — сброс, 1 — яркий, 5 — мигание, 7 — инверсия).
  • Режимы отображения: включение/выключение подчёркивания, мигания, скрытого текста.

Пример использования

Для изменения цвета текста на зелёный и фона на чёрный в командной строке MS-DOS можно было выполнить команду: `` ECHO ESC[32;40mТекст ` (где ESC — символ с кодом 27, вводимый, например, с помощью ECHO и Alt+27`).

Применение

ANSI.SYS широко использовался в эпоху MS-DOS для:

  • Создания цветных интерфейсов: программы, работающие в текстовом режиме, могли использовать цвета для выделения заголовков, ошибок, меню.
  • Разработки текстовых игр: многие игры, такие как «Rogue» и «Nethack», использовали ANSI-графику для отображения подземелий и персонажей.
  • Утилит и скриптов: пакетные файлы (.bat) могли использовать ANSI-последовательности для создания простых меню, прогресс-баров и анимации.
  • BBS (Bulletin Board System): системы электронных досок объявлений часто использовали ANSI-графику для оформления приветствий, меню и сообщений.

Достоинства и недостатки

Достоинства

  • Простота: для использования достаточно было загрузить драйвер и выводить обычные символы с escape-последовательностями.
  • Стандартизация: обеспечивал единообразное поведение на разных компьютерах IBM PC-совместимых.
  • Низкие системные требования: работал в текстовом режиме, не требовал графического адаптера.

Недостатки

  • Ограниченная функциональность: поддерживал только 16 цветов (в расширенном режиме) и не умел выводить графику, изображения или анимацию.
  • Зависимость от драйвера: если драйвер не был загружен, escape-последовательности выводились как обычный текст, что приводило к искажению интерфейса.
  • Проблемы с совместимостью: некоторые программы использовали нестандартные расширения, что приводило к некорректной работе на разных версиях драйвера.
  • Отсутствие поддержки Unicode: работал только с кодовой страницей OEM (например, CP437 или CP866), что ограничивало отображение символов.

Альтернативы

В среде MS-DOS существовали альтернативные драйверы, расширяющие функциональность ANSI.SYS или заменяющие его:

  • NANSI.SYS — неофициальная модификация, поддерживающая до 256 цветов, более широкий набор escape-последовательностей и улучшенную совместимость.
  • ANSI.COM — резидентная программа, загружаемая из командной строки, выполняющая те же функции, что и драйвер.
  • FANSI-CONSOLE — драйвер, поддерживающий 256 цветов, переключение кодовых страниц и работу с мышью.

В современных операционных системах ANSI-последовательности поддерживаются на уровне эмулятора терминала (например, в Windows Terminal, консоли Linux, iTerm2), что делает использование отдельного драйвера ненужным.

Интересные факты

  • В ранних версиях MS-DOS (до 3.3) ANSI.SYS не поддерживал 16 цветов фона, что ограничивало дизайн интерфейсов.
  • Из-за отсутствия стандартизации в некоторых программах использовались нестандартные escape-последовательности, что приводило к «сбою» драйвера и зависанию системы.
  • В эпоху BBS ANSI-графика стала отдельным видом искусства — «ANSI art», где художники создавали сложные изображения из символов и цветов.
  • Драйвер ANSI.SYS был включён в состав MS-DOS вплоть до версии 6.22 (1994 год), после чего в Windows 95 и 98 он оставался доступен для загрузки в режиме DOS.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →