ANSI.SYS - ANSI.SYS

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

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

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

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

УСТРОЙСТВО =водить машину:\дорожка ANSI.SYS опции

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

  • / К использовать расширенные функции BIOS клавиатуры (ИНТ 16ч ) вместо стандартных[4]
  • / Л сила количество линий
  • настроить прокрутку строки для поддержки программ чтения с экрана[4]
  • / S или же /РАЗМЕР ЭКРАНА установить размер экрана
  • /ИКС поддержка переопределения расширенных кодов клавиш независимо от стандартных кодов[4]

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

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

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

По умолчанию внутренняя команда DOS CLS работает, напрямую вызывая соответствующую функцию BIOS для очистки экрана, тем самым заметно нарушая модель аппаратной абстракции, поддерживаемую в противном случае. Однако, если драйвер ANSI обнаружен DR-DOS COMMAND.COM, вместо этого он отправит управляющую последовательность, определенную в зарезервированном переменная окружения $ CLS к подключенному консольному устройству.[5] Если переменная среды не определена, она возвращается к отправке последовательности ESC [2 Дж вместо.[5] Указание других последовательностей можно использовать для управления различными настройками экрана после CLS. Из-за трудностей определения переменных среды, содержащих двоичные данные, COMMAND.COM также принимает специальные nnn обозначение для восьмеричные числа.[5] Например, чтобы отправить альтернативную последовательность управления, например ESC + (за 1Bh 2Bh как используется Терминалы ASCII ), можно было бы определить переменную следующим образом:

НАБОР $ CLS = 033+

Эти функции поддерживаются COMMAND.COM во всех версиях DOS Plus и DR-DOS, но не в MS-DOS или PC DOS. Они также поддерживаются интерпретаторами команд в Параллельная DOS, Многопользовательская DOS и РЕАЛЬНЫЙ / 32, хотя они используют VT52 вместо управляющих последовательностей ANSI по умолчанию (например, ESC E).[5]

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

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

  • Некоторые версии ANSI.SYS поддерживают переключатель командной строки для отключения функции переназначения клавиш, например. опция / S (Безопасный) в ANSI.SYS из Datalight ROM-DOS[7] или NANSI.SYS[2] из FreeDOS. Другие драйверы ANSI, такие как ANSIPLUS, также могут быть настроены на отключение переопределения ключей.[3]
  • Параметр CONFIG.SYS ЭКРАН = ANSI в ПТС-ДОС предоставляет встроенный драйвер ANSI, не поддерживающий функции переназначения клавиатуры.[8][9]
  • Некоторые сторонние замены ANSI.SYS были специально разработаны, чтобы никогда не поддерживать функции переназначения клавиатуры.
  • ПО произвел TSR программа PKSFANSI (PK Safe ANSI), которая отфильтровывает управляющие коды переназначения клавиатуры по мере их записи на стандартный вывод.[10] Это имеет то преимущество, что пользователь может загрузить некоторые полезные переназначения из текстового файла, а затем запустить PKSFANSI, чтобы предотвратить дальнейшие, возможно злонамеренные переназначения.

Вхождение

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

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

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

Функции

CSI (Введение в контрольную последовательность ) является заполнителем для общей двухбайтовой escape-последовательности "ESC [" (то есть, 0x1B 0x5B).[12] Стандарт ANSI также определяет альтернативный однобайтовый код CSI. 0x9B, который не поддерживается ANSI.SYS.

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

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

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

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

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

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

Примечания

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

Рекомендации

  1. ^ Меффорд, Майкл (1989-02-07). "ANSI.com: Загрузите его здесь". Журнал ПК. Получено 2011-08-10.
  2. ^ а б Кегель, Даниэль; Алми, Том; Ауэр, Эрик (28 февраля 1999). «NANSI - усовершенствованный драйвер консоли MS-DOS». 4.0. Веб-хостел Дэна Кегеля. В архиве из оригинала на 2018-05-19. Получено 2011-08-10.
  3. ^ а б Свегер, Кристофер (2007) [2000]. «Настройка ANSIPLUS». В архиве из оригинала на 2018-10-04. Получено 2018-10-04.
  4. ^ а б c «Руководство по использованию ANSI.SYS». Архивировано из оригинал на 2007-06-23. Получено 2017-09-11.
  5. ^ а б c d Пол, Матиас Р. (1997-07-30) [1994-05-01]. NWDOS-TIPs - Советы и приемы для Novell DOS 7, с подробностями, исправлениями и обходными путями Blick auf undokumentierte. MPDOSTIP. Выпуск 157 (на немецком языке) (3-е изд.). В архиве из оригинала на 2017-09-10. Получено 2014-08-06. (NB. NWDOSTIP.TXT - это комплексная работа по Novell DOS 7 и OpenDOS 7.01, включая описание многих недокументированных функций и внутренних компонентов. Это часть еще более обширной работы автора. MPDOSTIP.ZIP Коллекция сохранялась до 2001 г. и распространялась на многих сайтах того времени. Приведенная ссылка указывает на старую версию HTML-конвертированного NWDOSTIP.TXT файл.) [1]
  6. ^ «Коды клавиатуры ANSI - коды клавиш ANSI.SYS и расширенные коды клавиш». µVGA - интерфейс микроконтроллера VGA. СЕКОНС ООО 2012. В архиве из оригинала на 2017-09-11. Получено 2017-09-11.
  7. ^ Datalight, Inc.; GPvNO (апрель 2005 г.) [1999]. "Руководство пользователя Datalight ROM-DOS" (PDF). Datalight, Inc. 3010-0200-0716. Получено 2018-09-16.
  8. ^ "Руководство пользователя PTS-DOS 2000 Pro" (PDF). Буггинген, Германия: Paragon Technology GmbH. 1999. В архиве (PDF) из оригинала на 2018-05-12. Получено 2018-05-12.
  9. ^ Гюнтер, Йенс; Эрнст, Тобиас (2004-04-25) [1996]. Ellsässer, Вольфганг (ред.). "Inoffizielle deutschsprachige PTS-DOS-FAQ (PTS / FAQD)" [Неофициальный немецкий PTS-DOS FAQ] (на немецком языке). Получено 2018-10-02.
  10. ^ Массингилл, Майкл Д. Пирсон, Дэйв (ред.). "ПК СЕЙФ АНСИ (PKSFANSI.COM)". В архиве из оригинала на 2017-09-11. Получено 2017-09-11.
  11. ^ Филд, Тим (ноябрь 1983 г.). «Устанавливаемые драйверы устройств для ПК DOS 2.0 - внутри IBM PC». БАЙТ. 8 (11): 188–196. Получено 2016-03-19.
  12. ^ а б c d «Глава 9: Настройка системы». Caldera, Inc. 1998. Архивировано с оригинал на 2017-09-10. Получено 2017-09-10. (NB. Документация пользователя DR-DOS 7, описание ANSI.SYS escape-последовательности (неполные))
  13. ^ «Последовательности виртуального терминала консоли». Консоль Windows.

внешняя ссылка