
			Дмитрий Кохманюк

		Кириллизация DOS -- некоторые аспекты.
		======================================


	Проблема полноценной поддержки национальных алфавитов в MS-DOS
существовала всегда, а полноценное ее решение сейчас, пожалуй, уже
невозможно. Это является следствием ошибок, допущенных при ее
проектировании фирмой Microsoft (а точнее, следствием отсутствия такового).
Частично проблема решается (драйверы клавиатуры, дисплея, принтера --
но только на уровне BIOS); что же касается полноценной поддержки
графики, то проблем столько, сколько комбинаций "формат шрифта / тип
устройства". Но оставим это -- поговорим лучше о самой DOS, то есть о
файловой системе. Можно ли использовать кириллицу в именах файлов?

Разумеется, нет! -- скажет любой, кто пробовал создать файл с именем
"ПРИВЕТ" -- команда copy, например, создает "приOет" (O -- латинское!),
а любимый Norton Commander превращает его вообще в "приодт". Что за
наглость! -- восклицает раздосадованный пользователь. Имя наглости --
DOS Extended Country Information Table. Если вы думаете, что DOS просто
так взял и создал файл с тем именем, которое вы попросили -- вы глубоко
заблуждаетесь! Сначала каждый символ имени файла (точнее, каждый с
кодом >= 128) будет торжественно перекодирован. Процесс происходит в
строгом соответствии с "Filename Uppercase Table". Хотите посмотреть на
нее? Пожалуйста!

Заглавные буквы:	АЪEAОAПАEEEIIIОПРТТOЩOUUYЩЪЫЬЭЮЯ
Строчные буквы:		AIOUеежзийклмнопрстуфхцчшщъыьэюя

(замечу в скобках, что таблица приведена для country code 0 (USA),
загружаемой по умолчанию. Если вы пользуетесь командой COUNTRY в файле
CONFIG.SYS, то вы можете загрузить другую таблицу. Но в любом случае,
в версиях DOS 3.x в файле COUNTRY.SYS нет кодовой таблицы 866.)

	В данный момент возможны два варианта поведения. Первый
-- А ЗАЧЕМ ВООБЩЕ ВСЕ ЭТО НУЖНО? Действительно, многим просто не нужны
русские буквы в именах файлов (во всяком случае, не очень). Второй
вариант, естественный для хакера (в правильном смысле этого слова)
-- А ПОЧЕМУ БЫ И НЕТ? В этом случае стоит разобраться, что же мешает
выполнению поставленной цели. Очевидно, внутренние таблицы DOS. Ну что
ж -- изменим их!

	Предлагаемая вашему вниманию программа делает именно это. Ее
исходный текст находится в файле CyrDos.Bsp, компилированный -- в файле
CyrDos.Com. Необходимы также include-файл Utils.Asi (прилагается),
структурный препроцессор BSP (из пакета Connell Scientific Graphics),
а также Turbo Assembler 2.0 и Turbo Link 3.0 (на MASM/LINK не испытывал
-- who cares?). Использованные источники -- Interrupt List, Release 27
(v91.4) Ральфа Брауна (рекомендую каждому для чтения в свободное время
-- особенно разделы, помеченные "BUG"). 

	Программа НЕ является резидентной. В случае ошибки возвращается
ненулевой код завершения. Кодировка символов соответствует кодовой
таблице 866.

	Для тех, кто желает взглянуть на стандартные таблицы DOS, 
рекомендую поискать (например, с помощью Quaid Analyser) текст
"ABCDE" в первых 64К оперативной памяти (формат см. в исходном тексте
программы).

	Естественно, программа CyrDos не решает проблему полностью.
Существуют программы, считающие себя главными специалистами по разбору
имен файлов. В частности, Norton Commander перекодирует русские символы
в соответствии с собственной таблицей. Поэтому необходимо соответственно
исправить ее: с помощью, например, DiskEdit записать по смещению 21902h
прилагаемый файл "CyrNc.Dat".

	И последнее: упомянутые в тексте торговые марки являются
зарегистрированными торговыми марками соответствующих фирм.


	Happy Cyrilizing!
					(C) Compact Soft, 1991
