ANSI.SYS

Драйвер устройства DOS

ANSI.SYSдрайвер устройства в семействе операционных систем DOS , который обеспечивает дополнительные функции консоли через escape-последовательности ANSI . Он частично основан на подмножестве стандарта управления текстовым терминалом , предложенного Техническим комитетом ANSI X3L2 по кодам и наборам символов («Комитет X3»).

Поскольку он не был установлен по умолчанию и был печально известен своей медлительностью, мало какое программное обеспечение использовало его преимущества и вместо этого прибегало к прямому манипулированию оборудованием IBM PC. Было создано несколько сторонних альтернатив, которые работали с разумной скоростью, например, ANSI.COM , [1] NANSI.SYS [2] и ANSIPLUS.EXE [3], чтобы попытаться изменить это. [ необходим сторонний источник ]

Использование

Чтобы использовать ANSI.SYS в DOS, в файл CONFIG.SYS (или CONFIG.NT в версиях Windows на базе Windows NT ) добавляется строка следующего содержания:

УСТРОЙСТВО = диск: \ путь \ANSI.SYS параметры

где drive: и path — это буква диска и путь к каталогу , в котором находится файл ANSI.SYS , а options — это ряд дополнительных переключателей для управления поведением. ANSI.SYS также можно загрузить в верхнюю память через DEVICEHIGH / HIDEVICE .

  • /K использовать расширенные функции BIOS клавиатуры ( INT 16h ) вместо стандартных [4] Это заставило клавиши F11 и F12 работать.
  • /L сила число строк
  • /R настроить прокрутку строк для поддержки программ чтения с экрана [4]
  • /S или /SCREENSIZE установить размер экрана
  • /X поддерживает переопределение расширенных кодов клавиш независимо от стандартных кодов [4]

Функциональность

Используя этот драйвер, программы, которые пишут в стандартный вывод, могут записывать escape-последовательности, чтобы использовать 16 цветов текста переднего плана и 8 цветов фона, доступных в текстовом режиме, совместимом с VGA , заставлять текст мигать, изменять местоположение курсора на экране и очищать экран. Они также могут изменять видеорежим со стандартного текстового режима 80×25 на ряд различных графических режимов (например, графический режим 320×200 с текстом, отображаемым в виде пикселей, хотя ANSI.SYS не может включать и выключать отдельные пиксели).

Стандартный ANSI.SYS очень медленный, поскольку он отображает escape-последовательности в вызовы BIOS (которые удалось спроектировать так, чтобы для вывода символа на экран и перемещения курсора вправо требовалось два вызова). Несколько компаний сделали сторонние замены, такие как NANSI.SYS [2] , которые взаимодействуют напрямую с видеопамятью , аналогично большинству программ DOS, имеющих полноэкранный пользовательский интерфейс.

COMMAND.COM проверил, используется ли этот драйвер, и изменил команду CLS , чтобы использовать escape-последовательность вместо вызова BIOS. [5]

Переназначение клавиатуры

Интересной (не)возможностью ANSI.SYS является возможность переназначать любую клавишу на клавиатуре для выполнения сочетаний клавиш или макросов для сложных инструкций. Используя специальные escape-последовательности, пользователь может определить любое нажатие клавиши, имеющее сопоставление символьного кода, для имитации произвольной последовательности таких нажатий клавиш. [6] Это использовалось для создания простых троянов из текстовых файлов, пронизанных гнусными переназначениями клавиатуры, известными как «бомбы ANSI». Для защиты пользователей от этого был выпущен ряд продуктов:

  • Многие замены для ANSI.SYS поддерживают переключатель командной строки для отключения функции переназначения клавиш, например, параметр /S (Secure) в Datalight ROM-DOS [7] или NANSI.SYS [ 2] FreeDOS . Другие драйверы ANSI, такие как ANSIPLUS, также можно настроить для отключения переопределения клавиш. [3]
  • Некоторые замены были намеренно разработаны так, чтобы никогда не поддерживать функции переназначения клавиатуры. [8] [9]
  • PKWARE создала резидентную программу «завершить и остаться» PKSFANSI (PK Safe ANSI), которая отфильтровывает escape-коды переназначения клавиатуры по мере их записи в стандартный вывод. [10] Это имеет то преимущество, что пользователь может загрузить некоторые полезные переназначения из текстового файла, а затем запустить PKSFANSI, чтобы предотвратить дальнейшие, возможно, вредоносные переназначения.

Происшествие

ANSI.SYS появился в MS-DOS 2.0 , первой версии операционной системы, поддерживающей драйверы устройств. [11] Он поддерживался всеми последующими версиями MS-DOS. Он также присутствует во многих не-Microsoft DOS-системах, например, IBM PC DOS и DR-DOS . [12]

ANSI.SYS требовался для запуска некоторого программного обеспечения, которое использовало его функции управления курсором и цветом. [12] Его также можно было использовать для включения сложных цветовых кодов в приглашении COMMAND.COM . Эти применения были затмены использованием ANSI.SYS в BBS ; управляющие последовательности ANSI использовались для того, чтобы BBS могли отправлять текстовую графику, более сложную, чем ASCII art , и управлять курсором способами, которые использовались в ряде онлайн-игр и подобных функциях.

Большинство версий Windows не поддерживали escape-коды ANSI каким-либо полезным способом (в некоторых версиях они могли использоваться эмуляцией MSDOS). В Windows 10 поддержка подобных escape-последовательностей была встроена в консоль Win32 (текстовое окно терминала), но должна быть активирована с помощью функции Windows APISetConsoleMode путем установки ENABLE_VIRTUAL_TERMINAL_PROCESSINGфлага. [13]

Функции

CSI ( Control Sequence Introducer ) — это заполнитель для общей двухбайтовой последовательности ввода escape-символа « ESC [ » (то есть 0x1B 0x5B ). [12] Стандарт ANSI также определяет альтернативный однобайтовый код CSI 0x9B , который не поддерживается ANSI.SYS (вместо этого кода рисуется знак цента ⟨¢⟩ из CP437 ).

Стандартные драйверы DOS ANSI.SYS поддерживают только следующий подмножество escape-последовательностей ANSI: [12]

ПоследовательностьЭффект
ESC [ р АКурсор вверх ( CUU )
ESC [ р БКурсор вниз ( CUD )
ESC [ c CКурсор вперед ( CUF )
ESC [ c DКурсор назад ( CUB )
ESC [ г ; с жГоризонтальное и вертикальное положение ( HVP )
ESC [ г ; с HПозиция курсора ( CUP )
ESC [ н ДжСтереть дисплей ( ED ) (n=0, 2 или n=0, 1, 2) [nb 1]
ESC [ н КСтереть в строке ( EL ) (n=0 или n=0, 1, 2) [nb 1]
ESC [ н мВыберите графическое представление ( SGR ) (n=0..47)
ESC [ 6 нОтчет о состоянии устройства ( DSR ) запрашивает позицию курсора,
возвращается как отчет о позиции курсора ( CPR ):
ESC [ r ; c R
ESC [ сСохранить позицию курсора ( SCP )
ESC [ uВосстановить позицию курсора ( RCP )

Также существуют некоторые escape-последовательности, специфичные для реализации ANSI.SYS . Они, как правило, не поддерживаются консолями ANSI в других операционных системах.

ПоследовательностьЭффект
ESC [ n h
ESC [ ? n h
ESC [ = n h
ESC [ > n h [nb 2]
Установить режим экрана ( SM ) [nb 2]
ESC [ n l
ESC [ ? n l
ESC [ = n l
ESC [ > n l [nb 2]
Сбросить режим экрана ( RM ) [nb 2]
ESC [ н дВключить (n=1) или отключить (n=0) поддержку /X [nb 3]
ESC [ ЛВставить строку ( IL ) [nb 4]
ESC [ МУдалить строку ( DL ) [nb 4]
ESC $ ) 1Переключить режим ввода с клавиатуры на корейский ( хангыль ) [примечание 5]
ESC ( 2Переключить режим ввода с клавиатуры на английский [nb 5]
ESC [ +Включить вывод на консоль [nb 6]
ESC [ -Отключить вывод на консоль [nb 6]
ESC [ а ; б ;... пПереопределение ключа набора ( SKR / KR )
Режимы экрана
РежимОписаниеРежимОписание
040 × 25 монохромный140 × 25 цветных
280 × 25 монохромный380 × 25 цветов
4320 × 200 цветных5320 × 200 монохромный
6640 × 200 монохромный
7Перенос в конце строки [nb 7]
13320 x 200 цвет (графика)14640 x 200 цветов (16-цветная графика)
15640 x 350 монохромный (двухцветная графика)16640 x 350 цветов (16-цветная графика)
17640 x 480 монохромный (двухцветная графика)18640 x 480 цветов (16-цветная графика)
19320 x 200 цветов (256-цветная графика)
114640 x 480 цветов (16-цветная графика) [nb 8]115640 x 475 цветов (16-цветная графика) [nb 8]

В некоторых реализациях DOS видеорежимы выше 7 не документированы. В многопользовательском DOS единственным допустимым аргументом в сочетании с PCTERM является 7.

Смотрите также

Примечания

  1. ^ ab Аргументы 0, 1, 2 поддерживаются и различаются только японскими версиями MS-DOS и PC DOS ANSI.SYS . Западные версии ANSI.SYS не поддерживают и не различают их. Однако они также поддерживаются Multiuser DOS .
  2. ^ abcd Вводный префикс '>' поддерживается только в японских версиях MS-DOS , PC DOS и DR-DOS ANSI.SYS для доступа к специальным японским режимам отображения.
  3. ^ Эта нестандартная escape-последовательность поддерживается только MS-DOS и PC DOS ANSI.SYS . Она может использоваться для включения или отключения поддержки расширенной клавиатуры во время выполнения, аналогично параметру запуска ANSI.SYS /X .
  4. ^ ab Эти нестандартные escape-последовательности для вставки и удаления строк поддерживаются только японскими версиями MS-DOS и PC DOS . Они также поддерживаются западными выпусками Multiuser DOS , но не DR-DOS.
  5. ^ ab Эти нестандартные escape-последовательности для переключения между корейским и английским режимами ввода с клавиатуры поддерживаются только корейскими версиями MS-DOS , PC DOS и DR-DOS ANSI.SYS .
  6. ^ ab Эти нестандартные escape-последовательности для отключения и повторного включения любого вывода на устройство CON: поддерживаются только ANSI.SYS DR -DOS 7.02 и выше. Они используются для отключения вывода консоли во время загрузки, например, в сочетании с загрузочными дискетами DR-WebSpyder .
  7. ^ Значение 7 используется для включения (с SM ) или отключения (с RM ) переноса в конце строк. Если опция включена, дополнительные символы переносятся на следующую строку, в то время как эти символы будут потеряны, если перенос отключен.
  8. ^ ab Видеорежимы 114 и 115 поддерживаются только японскими версиями DOS/V ANSI.SYS, входящими в состав DR DOS 6.0 , Novell DOS 7 и выше.

Ссылки

  1. ^ Меффорд, Майкл (1989-02-07). "ANSI.com: Загрузите его здесь". PC Magazine . Получено 2011-08-10 .
  2. ^ abc Кегель, Дэниел; Элми, Том; Ауэр, Эрик (1999-02-28). "NANSI – улучшенный драйвер консоли MS-DOS". 4.0. Веб-хостел Дэна Кегеля. Архивировано из оригинала 2018-05-19 . Получено 2011-08-10 .
  3. ^ ab Sweger, Kristofer (2007) [2000]. "Настройка ANSIPLUS". Архивировано из оригинала 2018-10-04 . Получено 2018-10-04 .
  4. ^ abc "Руководство по использованию ANSI.SYS". Архивировано из оригинала 2007-06-23 . Получено 2017-09-11 .
  5. ^ Пол, Матиас Р. (30 июля 1997 г.) [1 мая 1994 г.]. NWDOS-TIPs — советы и подсказки для Novell DOS 7, с просмотром недокументированных подробностей, ошибок и обходных путей. Выпуск 157 (на немецком языке) (3-е изд.). Архивировано из оригинала 10 сентября 2017 г. Проверено 6 августа 2014 г. {{cite book}}: |work=игнорируется ( помощь ) (Примечание. NWDOSTIP.TXT — это всеобъемлющая работа по Novell DOS 7 и OpenDOS 7.01, включающая описание многих недокументированных функций и внутренних компонентов. Она является частью еще более обширной коллекции MPDOSTIP.ZIP автора , которая поддерживалась до 2001 года и распространялась на многих сайтах в то время. Приведенная ссылка указывает на более старую версию файла NWDOSTIP.TXT , преобразованную в HTML .) [1]
  6. ^ "Коды клавиатуры ANSI - Коды клавиш ANSI.SYS и расширенные коды клавиш". µVGA - Интерфейс микроконтроллера VGA . SECONS Ltd. 2012. Архивировано из оригинала 2017-09-11 . Получено 2017-09-11 .
  7. ^ Datalight, Inc. ; GPvNO (апрель 2005 г.) [1999]. "Datalight ROM-DOS User's Guide" (PDF) . Datalight, Inc. 3010-0200-0716 . Получено 16 сентября 2018 г. .
  8. ^ "PTS-DOS 2000 Pro User Manual" (PDF) . Буггинген, Германия: Paragon Technology GmbH . 1999. Архивировано (PDF) из оригинала 2018-05-12 . Получено 2018-05-12 .
  9. ^ Гюнтер, Йенс; Эрнст, Тобиас (25 апреля 2004 г.) [1996]. Эллсэссер, Вольфганг (ред.). «Inoffizielle deutschsprachige PTS-DOS-FAQ (PTS/FAQD)» [Неофициальные немецкие часто задаваемые вопросы по PTS-DOS] (на немецком языке) . Проверено 2 октября 2018 г.
  10. ^ Massingill, Michael D. Pearson, Dave (ред.). "PK SAFE ANSI (PKSFANSI.COM)". Архивировано из оригинала 2017-09-11 . Получено 2017-09-11 .
  11. Филд, Тим (ноябрь 1983 г.). «Устанавливаемые драйверы устройств для PC DOS 2.0 — внутри IBM PC». BYTE . 8 (11): 188– 196 . Получено 19.03.2016 .
  12. ^ abcd "Глава 9: Настройка системы". Caldera, Inc. 1998. Архивировано из оригинала 2017-09-10 . Получено 2017-09-10 .(Примечание. Пользовательская документация DR-DOS 7, описание escape-последовательностей ANSI.SYS (неполное))
  13. ^ "Последовательности виртуального терминала консоли". Консоль Windows . 20 сентября 2022 г.
  • «Как изменить подсказку или цвет экрана в DOS?». Университет Индианы . 25.10.2010. Архивировано из оригинала 11.09.2017 . Получено 11.09.2017 .
  • Камбус, Фредерик (2017-04-19). "Набор инструментов для преобразования файлов ANSi/BiN/ADF/iDF/TUNDRA/XBiN в изображения PNG". Архивировано из оригинала 2017-09-11 . Получено 2017-09-11 .
Взято с "https://en.wikipedia.org/w/index.php?title=ANSI.SYS&oldid=1264474431"