ANSI.SYS - это драйвер устройства в семействе операционных систем DOS, который предоставляет дополнительные функции консоли с помощью управляющих последовательностей 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 .
- / K использовать расширенные функции BIOS клавиатуры ( INT 16h ) вместо стандартных [4]
- / L сила количество линий
- / R настроить прокрутку строки для поддержки программ чтения с экрана [4]
- / S или / SCREENSIZE установить размер экрана
- / X поддерживает переопределение расширенных кодов клавиш независимо от стандартных кодов [4]
Функциональность
После загрузки ANSI.SYS позволяет последовательностям кода применять различные функции форматирования текста. Используя этот драйвер, программы, которые пишут на стандартный вывод, могут использовать 16 цветов текста переднего плана и 8 цветов фона, доступных в VGA-совместимом текстовом режиме , заставлять текст мигать, изменять положение курсора на экране и очищать экран. . Он также позволяет изменять видеорежим со стандартного текстового режима 80 × 25 на несколько различных графических режимов (например, графический режим 320 × 200 с текстом, отображаемым в виде пикселей, хотя ANSI.SYS не предоставляет вызовы для включения отдельных включение и выключение пикселей).
Стандарт ANSI.SYS относительно медленен, поскольку отображает escape-последовательности на эквивалентные вызовы BIOS . Некоторые компании сделали сторонние замены, которые напрямую взаимодействуют с видеопамятью , аналогично большинству программ DOS с полноэкранным пользовательским интерфейсом.
По умолчанию внутренняя команда DOS CLS работает путем прямого вызова соответствующей функции BIOS для очистки экрана, тем самым заметно нарушая модель аппаратной абстракции, поддерживаемую в противном случае. Однако, если драйвер ANSI обнаружен DR-DOSCOMMAND.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. Они также поддерживаются интерпретаторами команд в Concurrent DOS , Multiuser DOS и REAL / 32 , хотя по умолчанию они используют управляющие последовательности VT52, а не ANSI (например, ESC E ). [5]
Переназначение клавиатуры
Интересная особенность ANSI.SYS - это возможность переназначить любую клавишу на клавиатуре для выполнения сочетаний клавиш или макросов для сложных инструкций. Используя специальные escape-последовательности, пользователь может определить любое нажатие клавиши с отображением кода символа для имитации произвольной последовательности таких нажатий клавиш. [6] Эта функция также использовалась злоумышленниками для создания простых троянских программ из текстовых файлов с примесью гнусных переназначений клавиатуры, известных как «бомбы ANSI». Для защиты пользователей от этого был выпущен ряд продуктов:
- Некоторые версии ANSI.SYS поддерживают переключатель командной строки для отключения функции переназначения клавиш, например параметр / S (Secure) в ANSI.SYS из Datalight ПЗУ-DOS , [7] или NANSI.SYS [2] из FreeDOS . Другие драйверы ANSI, такие как ANSIPLUS, также можно настроить для отключения переопределения ключей. [3]
- Настройка CONFIG.SYSSCREEN = ANSI в PTS-DOS предоставляет встроенный драйвер ANSI, не поддерживающий функции переназначения клавиатуры. [8] [9]
- Некоторые сторонние замены ANSI.SYS были специально разработаны для того, чтобы никогда не поддерживать функции переназначения клавиатуры.
- Компания PKWARE создала программу 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 не поддерживали escape-коды ANSI каким-либо полезным образом (в некоторых версиях это могло использоваться эмуляцией MSDOS). В ОС Windows 10 была построена поддержка подобных управляющих последовательностей в Win32 консоль (терминал окно текста), но должна быть активирована с помощью API Windows , функцию SetConsoleMode
, установив ENABLE_VIRTUAL_TERMINAL_PROCESSING
флажок. [13]
Функции
CSI ( Control Sequence Introducer ) - это заполнитель для общей двухбайтовой вводной последовательности escape-последовательности " ESC [ "(то есть 0x1B 0x5B ). [12] Стандарт ANSI также определяет альтернативный однобайтовый код CSI. 0x9B , который не поддерживается ANSI.SYS.
Стандартный DOS Драйверы ANSI.SYS поддерживают только следующий набор управляющих последовательностей ANSI: [12]
Последовательность | Эффект |
---|---|
ESC [ r A | Курсор вверх ( CUU ) |
ESC [ r B | Курсор вниз ( CUD ) |
ESC [ c C | Курсор вперед ( CUF ) |
ESC [ c D | Курсор назад ( CUB ) |
ESC [ r ; c f | Горизонтальное и вертикальное положение ( HVP ) |
ESC [ r ; c H | Положение курсора ( ЧАШКА ) |
ESC [ n J | Удалить дисплей ( ED ) (n = 0, 2 или n = 0, 1, 2) [nb 1] |
ESC [ n K | Удалить в строке ( EL ) (n = 0 или n = 0, 1, 2) [nb 1] |
ESC [ n m | Выбрать графическое воспроизведение ( SGR ) (n = 0..47) |
ESC [6 n | Отчет о состоянии устройства ( DSR ) запрашивает позицию курсора, возвращается как отчет о положении курсора ( CPR ): ESC [ r ; c R |
ESC [s | Сохранить позицию курсора ( 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 q | Включить (n = 1) или отключить (n = 0) / X support [nb 3] |
ESC [L | Вставить строку ( IL ) [nb 4] |
ESC [M | Удалить строку ( DL ) [nb 4] |
ESC $) 1 | Переключить режим ввода с клавиатуры на корейский ( хангыль ) [nb 5] |
ESC (2 | Переключить режим ввода с клавиатуры на английский [nb 5] |
ESC [+ | Включить вывод в консоль [nb 6] |
ESC [- | Отключить вывод на консоль [nb 6] |
ESC [ a ; б ; ... р | Установить новое определение ключа ( SKR / KR ) |
Режим | Описание | Режим | Описание |
---|---|---|---|
0 | 40 × 25 монохромный | 1 | 40 × 25 цвет |
2 | 80 × 25 монохромный | 3 | 80 × 25 цвет |
4 | 320 × 200 цвет | 5 | 320 × 200 монохромный |
6 | 640 × 200 монохромный | ||
7 | Перенести в конец строки [nb 7] | ||
13 | 320 x 200, цвет (графика) | 14 | 640 x 200 цветов (16-цветная графика) |
15 | 640 x 350 монохромный (2-цветная графика) | 16 | 640 x 350 цветов (16-цветная графика) |
17 | 640 x 480 монохромный (2-цветная графика) | 18 | 640 x 480 цветов (16-цветная графика) |
19 | 320 x 200 цветов (256-цветная графика) | ||
114 | 640 x 480 цветов (16-цветная графика) [nb 8] | 115 | 640 x 475 цветов (16-цветная графика) [nb 8] |
В некоторых реализациях DOS видеорежимы выше 7 не задокументированы. В многопользовательской DOS единственный допустимый аргумент в сочетании с PCTERM - 7.
Смотрите также
- Управляющая последовательность ANSI
Заметки
- ^ a b Аргументы 0, 1, 2 поддерживаются и различаются только японскими версиями MS-DOS и PC DOS.ANSI.SYS . Западные проблемы ANSI.SYS не поддерживает и не делает различий между ними. Однако они также поддерживаются многопользовательской DOS .
- ^ a b c d Начальный префикс '>' поддерживается только в японских версиях MS-DOS , PC DOS и DR-DOS.ANSI.SYS для доступа к специальным японским режимам отображения.
- ^ Эта нестандартная escape-последовательность поддерживается только MS-DOS и PC DOS.ANSI.SYS . Его можно использовать для включения или отключения расширенной поддержки клавиатуры во время выполнения, аналогично ANSI.SYSПараметр запуска / X.
- ^ a b Эти нестандартные escape-последовательности для вставки и удаления строк поддерживаются только японскими версиями MS-DOS и PC DOS . Они также поддерживаются западными выпусками многопользовательской DOS , но не DR-DOS.
- ^ a b Эти нестандартные escape-последовательности для переключения между корейским и английским режимами ввода с клавиатуры поддерживаются только корейскими версиями MS-DOS , PC DOS и DR-DOS.ANSI.SYS .
- ^ a b Эти нестандартные escape-последовательности для отключения и повторного включения любого вывода на устройство CON: поддерживаются Только ANSI.SYS для DR-DOS 7.02 и выше. Они используются для отключения вывода консоли во время загрузки, например, в сочетании с загрузочными дискетами DR-WebSpyder .
- ^ Значение 7 используется для включения (с помощью SM ) или отключения (с помощью RM ) обтекания в конце строк. Если этот параметр включен, дополнительные символы переносятся на следующую строку, а эти символы будут потеряны, если перенос отключен.
- ^ a b Видеорежимы 114 и 115 поддерживаются только японскими выпусками DOS / VANSI.SYS находится в DR DOS 6.0 , Novell DOS 7 и выше.
Рекомендации
- ^ Меффорд, Майкл (1989-02-07). «ANSI.com: Загрузите его здесь» . Журнал ПК . Проверено 10 августа 2011 .
- ^ а б Кегель, Даниэль; Алми, Том; Ауэр, Эрик (28 февраля 1999). «NANSI - усовершенствованный драйвер консоли MS-DOS» . 4.0. Веб-хостел Дэна Кегеля. Архивировано 19 мая 2018 года . Проверено 10 августа 2011 .
- ^ а б Свегер, Кристофер (2007) [2000]. «Настройка ANSIPLUS» . Архивировано 4 октября 2018 года . Проверено 4 октября 2018 .
- ^ а б в «Руководство по использованию ANSI.SYS» . Архивировано из оригинала на 2007-06-23 . Проверено 11 сентября 2017 .
- ^ а б в г Пол, Матиас Р. (1997-07-30) [1994-05-01]. NWDOS-TIPs - Советы и приемы для Novell DOS 7, с подробным описанием, ошибками и обходными путями . MPDOSTIP . Выпуск 157 (на немецком языке) (3-е изд.). Архивировано 10 сентября 2017 года . Проверено 6 августа 2014 . (NB. NWDOSTIP.TXT - это комплексная работа по Novell DOS 7 и OpenDOS 7.01, включающая описание многих недокументированных функций и внутренних компонентов. Это часть еще более обширной работы автора. Коллекция MPDOSTIP.ZIP поддерживалась до 2001 года и в то время распространялась на многих сайтах. Предоставленная ссылка указывает на старую версию HTML-конвертированного NWDOSTIP.TXT файл.) [1]
- ^ «Коды клавиатуры ANSI - коды клавиш ANSI.SYS и расширенные коды клавиш» . µVGA - интерфейс микроконтроллера VGA . SECONS Ltd. 2012. Архивировано 11 сентября 2017 года . Проверено 11 сентября 2017 .
- ^ Datalight, Inc .; ГПвНО (апрель 2005 г.) [1999]. «Руководство пользователя Datalight ROM-DOS» (PDF) . Datalight, Inc. 3010-0200-0716 . Проверено 16 сентября 2018 .
- ^ «Руководство пользователя PTS-DOS 2000 Pro» (PDF) . Буггинген, Германия: Paragon Technology GmbH . 1999. Архивировано (PDF) из оригинала 12 мая 2018 года . Проверено 12 мая 2018 .
- ^ Гюнтер, Йенс; Эрнст, Тобиас (2004-04-25) [1996]. Ellsässer, Вольфганг (ред.). «Inoffizielle deutschsprachige PTS-DOS-FAQ (PTS / FAQD)» [Неофициальный немецкий PTS-DOS FAQ] (на немецком языке) . Проверено 2 октября 2018 .
- ^ Массингилл, Майкл Д. Пирсон, Дэйв (ред.). «ПК БЕЗОПАСНЫЙ АНСИ (PKSFANSI.COM)» . Архивировано 11 сентября 2017 года . Проверено 11 сентября 2017 .
- ^ Филд, Тим (ноябрь 1983 г.). «Устанавливаемые драйверы устройств для ПК DOS 2.0 - внутри IBM PC» . БАЙТ . 8 (11): 188–196 . Проверено 19 марта 2016 .
- ^ а б в г «Глава 9: Настройка системы» . Кальдера, Inc. 1998. Архивировано из оригинала на 2017-09-10 . Проверено 10 сентября 2017 . (NB. Документация пользователя DR-DOS 7, описание Управляющие последовательности ANSI.SYS (неполные))
- ^ «Последовательности виртуального терминала консоли» . Консоль Windows .
Внешние ссылки
- «Как я могу изменить подсказку или цвет экрана в DOS?» . Университет Индианы . 2010-10-25. Архивировано 11 сентября 2017 года . Проверено 11 сентября 2017 .
- Камбус, Фредерик (2017-04-19). «Набор инструментов для преобразования файлов ANSi / BiN / ADF / iDF / TUNDRA / XBiN в изображения PNG» . Архивировано 11 сентября 2017 года . Проверено 11 сентября 2017 .