ANSI.SYS
ANSI.SYS — это драйвер устройства в DOS семействе операционных систем , который обеспечивает дополнительные консоли функции посредством escape-последовательностей ANSI . Он частично основан на подмножестве стандарта управления текстовым терминалом , предложенного Техническим комитетом ANSI X3L2 по кодам и наборам символов («Комитет X3»).
Поскольку он не был установлен по умолчанию и работал, как известно, медленно, немногие программы воспользовались его преимуществами и вместо этого прибегли к непосредственному манипулированию аппаратным обеспечением IBM PC. Был создан ряд сторонних альтернатив, работавших с разумной скоростью, таких как ANSI.COM , [1] НАНСИ.SYS [2] и ANSIPLUS.EXE [3] попытаться изменить это. [ нужен сторонний источник ]
Использование
[ редактировать ]Чтобы использовать ANSI.SYS под DOS, в файл добавляется строка CONFIG.SYS (или CONFIG.NT в версиях Windows на базе Windows NT ), который гласит:
- УСТРОЙСТВО = диск: \ путь ANSI.SYS \ параметры
где диск: и путь — буква диска и путь к каталогу , в котором находится файл. ANSI.SYS найден, а опциями может быть ряд дополнительных переключателей для управления поведением. ANSI.SYS также может быть загружен в верхнюю память через УСТРОЙСТВОВЫСОКИЙ / ХИДЕВИЦЕ .
- /K использовать расширенные функции BIOS клавиатуры ( INT 16h ) вместо стандартных. [4] Это заставило клавиши F11 и F12 работать.
- /L принудительное количество строк
- /R настроить прокрутку строк для поддержки программ чтения с экрана [4]
- /С или /SCREENSIZE установить размер экрана
- /X поддерживает переопределение расширенных кодов клавиш независимо от стандартных кодов. [4]
Функциональность
[ редактировать ]Используя этот драйвер, программы, выполняющие запись в стандартный вывод, могут использовать 16 цветов переднего плана текста и 8 цветов фона, доступных в текстовом режиме, совместимом с VGA , заставлять текст мигать, изменять положение курсора на экране и гасить экран. . Он также позволяет менять видеорежим со стандартного текстового режима 80×25 на ряд различных графических режимов (например, графический режим 320×200 с текстом, нарисованным в виде пикселей, хотя ANSI.SYS не может поворачивать отдельные пиксели). вкл и выкл).
Стандарт ANSI.SYS относительно медленный, поскольку он сопоставляет escape-последовательности с вызовами BIOS (которые удалось спроектировать так, что два для вывода символа на экран и перемещения курсора вправо требовалось вызова). Несколько компаний сделали сторонние замены, которые напрямую взаимодействуют с видеопамятью , аналогично большинству программ DOS, имеющих полноэкранный пользовательский интерфейс.
По умолчанию внутренняя команда DOS CLS работает путем прямого вызова соответствующей функции BIOS для очистки экрана, тем самым явно нарушая модель абстракции оборудования. [5]
Переназначение клавиатуры
[ редактировать ]Интересная особенность ANSI.SYS — это возможность переназначать любую клавишу на клавиатуре для выполнения сочетаний клавиш или макросов для сложных инструкций. Используя специальные escape-последовательности, пользователь может определить любое нажатие клавиши, имеющее сопоставление символьного кода, для имитации произвольной последовательности таких нажатий клавиш. [6] Эта функция также использовалась для создания простых троянов из текстовых файлов с гнусными переназначениями клавиатуры, известных как «бомбы ANSI». Для защиты пользователей от этого был выпущен ряд продуктов:
- Некоторые версии ANSI.SYS поддерживают переключатель командной строки для отключения функции переназначения ключей, например, опция /S (безопасный) в ANSI.SYS Datalight ROM-DOS [7] или NANSI.SYS [2] из FreeDOS . Другие драйверы ANSI, такие как ANSIPLUS, также можно настроить на отключение переопределения ключей. [3]
- Настройка CONFIG.SYS SCREEN =ANSI в PTS-DOS предоставляет встроенный драйвер ANSI, не поддерживающий функции переназначения клавиатуры. [8] [9]
- Некоторые из сторонних замен ANSI.SYS были намеренно разработаны так, чтобы никогда не поддерживать функции переназначения клавиатуры.
- PKWARE выпустила резидентную программу PKSFANSI (PK Safe ANSI), которая отфильтровывает escape-коды переназначения клавиатуры, когда они записываются на стандартный вывод. [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 ; Escape-последовательности ANSI использовались для того, чтобы BBS могли отправлять текстовую графику более сложную , чем графика ASCII , а также для управления курсором способами, которые использовались в ряде онлайн-игр и подобных функциях.
Большинство версий Windows не поддерживали escape-коды ANSI каким-либо полезным способом (в некоторых версиях их можно было использовать при эмуляции MSDOS). В Windows 10 поддержка подобных escape-последовательностей была встроена в консоль Win32 (окно текстового терминала), но ее необходимо активировать с помощью Windows API . функции SetConsoleMode
установив ENABLE_VIRTUAL_TERMINAL_PROCESSING
флаг. [13]
Функции
[ редактировать ]CSI ( Control Sequence Introducer ) — это заполнитель для общей двухбайтовой escape-последовательности. ESC [ " (т. е. 0x1B 0x5B ). [12] Стандарт ANSI также определяет альтернативный однобайтовый код CSI. 0x9B , который не поддерживается ANSI.SYS (вместо этого код рисует знак цента ⟨¢⟩ из CP437 ).
Стандартный ДОС Драйверы ANSI.SYS поддерживают только следующий набор escape-последовательностей ANSI: [12]
Последовательность | Эффект |
---|---|
ESC [ r A | Курсор вверх ( CUU ) |
ESC [ r B | Курсор вниз ( CUD ) |
ESC [ c C | Курсор вперед ( CUF ) |
ESC [ c D | Курсор назад ( CUB ) |
ЭСК [ р ; ж в | Горизонтальное и вертикальное положение ( HVP ) |
ЭСК [ р ; в ч | Позиция курсора ( КУБОК ) |
ESC [ н Дж | Стереть дисплей ( ED ) (n=0, 2 или n=0, 1, 2) [номер 1] |
ESC [ н К | Стереть в строке ( EL ) (n=0 или n=0, 1, 2) [номер 1] |
ESC [ н м | Выберите графическое исполнение ( SGR ) (n=0..47) |
ESC [ 6 н | Отчет о состоянии устройства ( DSR ) запрашивает положение курсора, возвращается в виде отчета о положении курсора ( CPR ): ЭСК [ р ; с р |
ESC [ с | Сохранить позицию курсора ( SCP ) |
ESC [ ты | Восстановить позицию курсора ( RCP ) |
Существуют также некоторые escape-последовательности, специфичные для реализации ANSI.SYS . Обычно они не поддерживаются консолями ANSI в других операционных системах.
Последовательность | Эффект |
---|---|
ESC [ н ч ЭСК [ ? н ч ESC [ = n ч ESC [ > н ч [номер 2] | Установить режим экрана ( SM ) [номер 2] |
ESC [ н л ЭСК [ ? нет , я ESC [ = n l ESC [ > n л [номер 2] | Сброс режима экрана ( RM ) [номер 2] |
ESC [ n q | Включить (n=1) или отключить (n=0) /X поддержка [номер 3] |
ESC [ Л | Вставить строку ( IL ) [номер 4] |
ESC [ М | Удалить строку ( DL ) [номер 4] |
ЭСК $ ) 1 | Переключить режим ввода с клавиатуры на корейский ( хангыль ) [номер 5] |
ЭКУ ( 2 | Переключить режим ввода с клавиатуры на английский [номер 5] |
ЭСК [ + | Включить вывод консоли [номер 6] |
ЭКУ [ - | Отключить вывод консоли [номер 6] |
ЭСК [ а ; б ;... р | Установить переопределение ключей ( SKR / KR ) |
Режим | Описание | Режим | Описание |
---|---|---|---|
0 | 40×25 монохромный | 1 | 40×25 цветной |
2 | 80×25 монохромный | 3 | 80×25 цветной |
4 | 320×200 цветной | 5 | 320×200 монохромный |
6 | 640 × 200 монохромный | ||
7 | Перенос в конце строки [номер 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-цветная графика) [номер 8] | 115 | Цветное разрешение 640 x 475 (16-цветная графика) [номер 8] |
В некоторых реализациях DOS видеорежимы выше 7 не документированы. В многопользовательской DOS единственным допустимым аргументом в сочетании с PCTERM является 7.
См. также
[ редактировать ]Примечания
[ редактировать ]- ^ Jump up to: а б Аргументы 0, 1, 2 поддерживаются и различаются только японскими версиями MS-DOS и PC DOS. ANSI.SYS . Западные проблемы ANSI.SYS не поддерживает их и не различает их. Однако они также поддерживаются многопользовательской DOS .
- ^ Jump up to: а б с д Начальный префикс «>» поддерживается только в японских версиях MS-DOS , PC DOS и DR-DOS. ANSI.SYS для доступа к специальным режимам отображения на японском языке.
- ^ Эта нестандартная escape-последовательность поддерживается только MS-DOS и PC DOS. ANSI.SYS . Его можно использовать для включения или отключения расширенной поддержки клавиатуры во время выполнения, аналогично ANSI.SYS /X вариант запуска.
- ^ Jump up to: а б Эти нестандартные escape-последовательности для вставки и удаления строк поддерживаются только японскими версиями MS-DOS и PC DOS . Они также поддерживаются западными выпусками Multiuser DOS , но не DR-DOS.
- ^ Jump up to: а б Эти нестандартные escape-последовательности для переключения между корейским и английским режимами ввода с клавиатуры поддерживаются только корейскими версиями MS-DOS , PC DOS и DR-DOS. ANSI.SYS .
- ^ Jump up to: а б Эти нестандартные escape-последовательности для отключения и повторного включения любого вывода на устройство CON: поддерживаются ANSI.SYS только для DR-DOS 7.02 и выше. Они используются для отключения звука консоли во время загрузки, например, в сочетании с DR-WebSpyder загрузочными дискетами .
- ^ Значение 7 используется для включения (с помощью SM ) или отключения (с помощью RM ) переноса в конце строк. Если этот параметр включен, дополнительные символы переносятся на следующую строку, тогда как эти символы будут потеряны, если перенос отключен.
- ^ Jump up to: а б Видеорежимы 114 и 115 поддерживаются только японскими DOS/V . выпусками ANSI.SYS встречается в DR DOS 6.0 , Novell DOS 7 и выше.
Ссылки
[ редактировать ]- ^ Меффорд, Майкл (7 февраля 1989 г.). «ANSI.com: загрузите здесь» . Журнал ПК . Проверено 10 августа 2011 г.
- ^ Jump up to: а б Кегель, Дэниел; Элми, Том; Ауэр, Эрик (28 февраля 1999 г.). «NANSI — расширенный драйвер консоли MS-DOS» . 4.0. Веб-хостел Дэна Кегеля. Архивировано из оригинала 19 мая 2018 г. Проверено 10 августа 2011 г.
- ^ Jump up to: а б Свегер, Кристофер (2007) [2000]. «Настройка АНСИПЛЮС» . Архивировано из оригинала 4 октября 2018 г. Проверено 4 октября 2018 г.
- ^ Jump up to: а б с «Руководство по использованию ANSI.SYS» . Архивировано из оригинала 23 июня 2007 г. Проверено 11 сентября 2017 г.
- ^ Пол, Матиас Р. (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 года и в то время распространялась на многих сайтах. Предоставленная ссылка указывает на более старую версию файла, преобразованную в HTML. NWDOSTIP.TXT файл .) [1] - ^ «Коды клавиатуры ANSI — коды клавиш ANSI.SYS и расширенные клавиши» . µVGA-VGA Интерфейс микроконтроллера . SECONS Ltd., 2012. Архивировано из оригинала 11 сентября 2017 г. Проверено 11 сентября 2017 г.
- ^ Даталайт, Инк .; ГПвНО (апрель 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 г.
- ^ Гюнтер, Йенс; Эрнст, Тобиас (25 апреля 2004 г.) [1996]. Эллсэссер, Вольфганг (ред.). «Неофициальные часто задаваемые вопросы по PTS-DOS на немецком языке (PTS/FAQD)» [Неофициальные часто задаваемые вопросы по PTS-DOS на немецком языке] (на немецком языке) . Проверено 02 октября 2018 г.
- ^ Массингилл, Майкл Д. Пирсон, Дэйв (ред.). «ПК СЕЙФ ANSI (PKSFANSI.COM)» . Архивировано из оригинала 11 сентября 2017 г. Проверено 11 сентября 2017 г.
- ^ Филд, Тим (ноябрь 1983 г.). «Устанавливаемые драйверы устройств для ПК DOS 2.0 — внутри IBM PC» . БАЙТ . 8 (11): 188–196 . Проверено 19 марта 2016 г.
- ^ Jump up to: а б с д «Глава 9: Настройка системы» . Caldera, Inc., 1998. Архивировано из оригинала 10 сентября 2017 г. Проверено 10 сентября 2017 г. (Примечание. Пользовательская документация DR-DOS 7, описание Escape-последовательности ANSI.SYS (неполные))
- ^ «Последовательности виртуального терминала консоли» . Консоль Windows . 20 сентября 2022 г.
Внешние ссылки
[ редактировать ]- «Как в DOS изменить подсказку или цвет экрана?» . Университет Индианы . 25 октября 2010 г. Архивировано из оригинала 11 сентября 2017 г. Проверено 11 сентября 2017 г.
- Камбус, Фредерик (19 апреля 2017 г.). «Набор инструментов для преобразования файлов ANSi/BiN/ADF/iDF/TUNDRA/XBiN в изображения PNG» . Архивировано из оригинала 11 сентября 2017 г. Проверено 11 сентября 2017 г.