Главное меню
Мы солидарны с Украиной. Узнайте здесь, как можно поддержать Украину.

DOS и Unicode

Автор mnashe, января 11, 2012, 08:59

0 Пользователи и 1 гость просматривают эту тему.

mnashe

Цитата: Robert Dunwell от января 11, 2012, 08:53
Он позволяет скопировать текст словарных статей в буфер обмена, но, к сожалению, в кодировке ASCII, а фонетическая транскрипция при этом превращается в полную кашу.
Ужас!
Не понятно, почему.
Моя древняя DOS-овская программа и то копирует в буфер обмена в виде Unicode, это почти ничем не сложнее.
Адепт единственного числа и безродового склонения
שָׁלוֹם עֲלֵיכֶם!


mnashe

Цитата: lengzoi от января 11, 2012, 09:34
Противоречие.
Не противоречие.
В Windows 9x есть поддержка некоторых Windows'овых функций для DOS-программ (через стандартный механизм прерываний). В частности, есть доступ к Clipboard, а также программа может кошерно закрыться по команде через Windows'овский интерфейс (нажатие на крестик, завершение сеанса и т.п.).
К сожалению, в Windows XP этого нет. Проблему с clipboard я обошёл простейшей консольной утилитой (8 kB), копирующей в clipboard содержимое файла или читающей clipboard в файл, а вот для выхода выхода нет.
Поддержка LFN (длинных имён файлов) есть и в XP, но unicode, к сожалению, недоступен.
Адепт единственного числа и безродового склонения
שָׁלוֹם עֲלֵיכֶם!

jvarg

Все боятся быть обвинёнными в ксенофобии. А вот в русофобии никто.
(© Захар Прилепин)

mnashe

С экрана-то как раз в Unicode не получится.
Адепт единственного числа и безродового склонения
שָׁלוֹם עֲלֵיכֶם!

jvarg

Цитата: mnashe от января 11, 2012, 10:20
С экрана-то как раз в Unicode не получится.

Да какая разница?

Потом открываешь в AkelPad, и сохраняешь хоть Юникоде, хоть в любой кодовой странице txt.
Все боятся быть обвинёнными в ксенофобии. А вот в русофобии никто.
(© Захар Прилепин)

mnashe

Цитата: jvarg от января 11, 2012, 10:55
Да какая разница?
Большая разница.
У меня кодовая страница — Windows-1251. Для DOS, соответственно, 866.
А редактор работает и с кириллицей, и с ивритом, и даже позволяет отображать их на экране одновременно.
Мог бы при необходимости сделать, скажем, английскую транскрипцию.
Ну и что мне делать со всей той фигнёй, которая будет у меня в AkelPad'е после упомянутых операций?
Адепт единственного числа и безродового склонения
שָׁלוֹם עֲלֵיכֶם!

lengzoi

Цитата: mnashe от января 11, 2012, 09:58
В Windows 9x есть поддержка некоторых Windows'овых функций для DOS-программ (через стандартный механизм прерываний). В частности, есть доступ к Clipboard, а также программа может кошерно закрыться по команде через Windows'овский интерфейс (нажатие на крестик, завершение сеанса и т.п.).
Понятно. Я об этом слышал, но про доступ к буферу обмена не знал. Интересно.

Robert Dunwell

Цитата: mnashe от января 11, 2012, 09:58
Цитата: lengzoi от января 11, 2012, 09:34
Противоречие.
Не противоречие.
В Windows 9x есть поддержка некоторых Windows'овых функций для DOS-программ (через стандартный механизм прерываний). В частности, есть доступ к Clipboard, а также программа может кошерно закрыться по команде через Windows'овский интерфейс (нажатие на крестик, завершение сеанса и т.п.).
К сожалению, в Windows XP этого нет. Проблему с clipboard я обошёл простейшей консольной утилитой (8 kB), копирующей в clipboard содержимое файла или читающей clipboard в файл, а вот для выхода выхода нет.
Поддержка LFN (длинных имён файлов) есть и в XP, но unicode, к сожалению, недоступен.
Имейте в виду, то Командная Строка - это НЕ DOS. Это эмулятор DOS в среде Windows. Большинство истинных приложений DOS в этой среде НЕ РАБОТАЕТ.
Чистый DOS не поддерживает и НИКОГДА НЕ ПОДДЕРЖИВАЛ Unicode. Стало возможно использовать несколько кодовых страниц в одном документе только с появлением Windows. Кодовая страница под DOS может содержать максимум 256 знаков, тогда как Unicode поддерживает до 65536 знаков, что абсолютно немыслимо с размерами памяти, доступными под истиным DOS. С другой стороны, Apple почти всегда обладал такой возможностью.

mnashe

Цитата: Robert Dunwell от января 11, 2012, 15:29
Большинство истинных приложений DOS в этой среде НЕ РАБОТАЕТ.
Почти все истинные приложения DOS работают в Windows 9x и Windows XP.
Бо́льшая часть работает и в Windows 7 32 bit.

Остальное верно.
Адепт единственного числа и безродового склонения
שָׁלוֹם עֲלֵיכֶם!

jvarg

Цитата: Robert Dunwell от января 11, 2012, 15:29
Большинство истинных приложений DOS в этой среде НЕ РАБОТАЕТ.
Поясните, что вы имеете в виду под "истинными приложениями" DOS?

Все работает.

У некоторых старых игрушек звука нет, это да. Но заплатками лечится.
Все боятся быть обвинёнными в ксенофобии. А вот в русофобии никто.
(© Захар Прилепин)

Robert Dunwell

Цитата: jvarg от января 11, 2012, 16:35
Цитата: Robert Dunwell от января 11, 2012, 15:29
Большинство истинных приложений DOS в этой среде НЕ РАБОТАЕТ.
Поясните, что вы имеете в виду под "истинными приложениями" DOS?

Все работает.

У некоторых старых игрушек звука нет, это да. Но заплатками лечится.
Многие приложения DOS напрямую управляли устройствами. Под WINDOWS это строго противопоказано. Под DOS программы работали в однозадачном, монопольном режиме и применяли много программных приемов, которые совершенно недопустимы в многозадачном режиме Windows.

Dmetri

Цитата: Robert Dunwell от января 11, 2012, 15:29
Чистый DOS не поддерживает и НИКОГДА НЕ ПОДДЕРЖИВАЛ Unicode. Стало возможно использовать несколько кодовых страниц в одном документе только с появлением Windows. Кодовая страница под DOS может содержать максимум 256 знаков
Чистый DOS никак не препятствует создавать на нём приложения с графическим режимом и уникодом, и тем более использовать несколько кодовых страниц. Что mnashe и сделал, как я понял.

Цитата: Robert Dunwell от января 11, 2012, 15:29тогда как Unicode поддерживает до 65536 знаков
У Вас устаревшая информация. Идиллию испортили уже в 1996 году. Теперь уникод поддерживает до 1,114,112 символов.

Цитата: Robert Dunwell от января 11, 2012, 15:29тогда как Unicode поддерживает до 65536 знаков, что абсолютно немыслимо с размерами памяти, доступными под истиным DOS
а) Далеко не все эти знаки используются, а реально в жизни надо много меньше. Сделать приложение, работающее с уникодом без иероглифов и редких письменностей, под DOS вполне можно. Вопрос в том, что никому не нужно...
б) Хотя иероглифы составляют проблему, их можно переконвертировать при чтении файла в какой-нибудь нормальный вид (разбить по графемам и выделить для графем часть области private use) и реально тратить на шрифт для иероглифов меньше 100 Кб. См. CangJie.
в) Есть же DMPI.

Цитата: Robert Dunwell от января 11, 2012, 15:29С другой стороны, Apple почти всегда обладал такой возможностью.
ORLY? Реквестирую Кодера в тред.

mnashe

Цитата: Robert Dunwell от января 11, 2012, 20:58
Многие приложения DOS напрямую управляли устройствами. Под WINDOWS это строго противопоказано. Под DOS программы работали в однозадачном, монопольном режиме и применяли много программных приемов, которые совершенно недопустимы в многозадачном режиме Windows.
Не так уж и строго.
В полноэкранном режиме с экраном можно напрямую делать почти всё, что угодно.
Некоторые настройки видеокарты Windows исправно сохраняет при переходе в режим «в окне» и впоследствии восстанавливает. Не все, правда.
А некоторые настройки он даже в режиме «в окне» эмулирует. Прежде всего — количество строк на экране.
Вот сравните эмуляцию режимов экрана с разным количеством строк: 25, 32, 40.
Переключается всё на лету, не выходя на полный экран, несмотря на то, что переключение делается напрямую через порт, а не прерыванием. На третьем скриншоте как раз фрагмент программы, которая это делает.
Адепт единственного числа и безродового склонения
שָׁלוֹם עֲלֵיכֶם!

mnashe

Цитата: Dmetri от января 11, 2012, 22:07
Чистый DOS никак не препятствует создавать на нём приложения с графическим режимом и уникодом, и тем более использовать несколько кодовых страниц. Что mnashe и сделал, как я понял.
Да, у меня несколько кодовых страниц: западноевропейская, 866, 862, а также частичное отображение (через специальную таблицу) 1251, 1255, так что можно работать и с HTML без перекодирования.
И всё это делается не через задницу и перезапуск компьютера, как в Windows, а мгновенно двумя кликами.
Вот только в режиме «в окне» выбранный шрифт не отображается. Пришлось пожертвовать менее важными символами и вместить ивритицу с кириллицей в одну страницу (жёлтая табличка выше), которая и используется для отображения, а остальное «проецировать» в неё таблицами.
Адепт единственного числа и безродового склонения
שָׁלוֹם עֲלֵיכֶם!

Robert Dunwell

Цитата: Demetrius от января 11, 2012, 22:07
Цитата: Robert Dunwell от января 11, 2012, 15:29тогда как Unicode поддерживает до 65536 знаков
У Вас устаревшая информация. Идиллию испортили уже в 1996 году. Теперь уникод поддерживает до 1,114,112 символов.
Я мало увлекаюсь компьютерами последние годы... действительно у меня устаревшая информация (как и я сам "слегка" постарел с годами...  Вопрос.  Поскольку UNICODE - двухбайтовый код (2^16 = 65536), как выполнена поддержка 1,114,112 знаков? Там несколько кодовых таблиц (как в DOS), или добавали третий байт?. Для поддержки в таком случае должен быть по меньшей мере 21-разрядный код, или многократное переопределение некоторых кодовых значений.
Спасибо за апдейт моих устаревших представлений.

Robert Dunwell

Цитата: Dmetri от января 11, 2012, 22:07
Цитата: Robert Dunwell от января 11, 2012, 15:29С другой стороны, Apple почти всегда обладал такой возможностью.
ORLY? Реквестирую Кодера в тред.
Я имею в виду чисто исторически.
Фирма Apple всегда очень умело пользовалась судебной системой для того, чтобы блокировать выход конкурентных продуктов на рынок. Система Windows появилась намного позже, чем могла бы, из-за того, что фирма Apple утверждала в свое время, что графический пользовательский интерфейс на персоналках был ее собственностью, ею запатентован, и больше никто не имел право его использовать. Microsoft долго ходил по судам и, наконец, доказал что фирма Apple сама является нарушителем патентов фирмы Westinghouse (кажется), которая разработала и (видимо) запатентовала части этой технологии еще раньше, чем Apple. Только после этой победы появилась система Window с поддержкой нескольких кодовых таблиц в одном документе. В ванильном DOS-е такая поддержка не была предусмотрена и не предусмратривалась, как контрстратегическое направление. Тем временем, Apple увела почти весь издательский рынок, который должен был сочетать французский, немецкий и русский в одном документе, что под DOS-ом того времени было решительно невозможно.

Dmetri

Цитата: Robert Dunwell от января 12, 2012, 05:33
Поскольку UNICODE - двухбайтовый код (2^16 = 65536), как выполнена поддержка 1,114,112 знаков? Там несколько кодовых таблиц (как в DOS), или добавали третий байт?
Чаще всего используется кодирование переменной длины: UTF-8 (от 1 до 5 байтов на символ) или UTF-16 (2 или 4 байта на символ). UTF-16 совместима с ранним двухбайтовым уникодом.

Впрочем, там нужен не целый байт. Зарезервированы только 11 «плоскостей» по 65536 знаков в каждой; всего доступны коды от U+0000 до U+10FFFF. При этом коды выше FFFF во многих программах вообще не работают (Опера, MySQL, наш форум) и очень часто недостаточно протестированы и служат источником многих ошибок.

Вообще, мне кажется, что уникод (по крайней мере современный)—это зло. К сожалению, что ничего (из распространённого) лучшего нет. :'(

Robert Dunwell

Цитата: Dmetri от января 12, 2012, 06:52
Цитата: Robert Dunwell от января 12, 2012, 05:33
Поскольку UNICODE - двухбайтовый код (2^16 = 65536), как выполнена поддержка 1,114,112 знаков? Там несколько кодовых таблиц (как в DOS), или добавали третий байт?
Чаще всего используется кодирование переменной длины: UTF-8 (от 1 до 5 байтов на символ) или UTF-16 (2 или 4 байта на символ). UTF-16 совместима с ранним двухбайтовым уникодом.

Впрочем, там нужен не целый байт. Зарезервированы только 11 «плоскостей» по 65536 знаков в каждой; всего доступны коды от U+0000 до U+10FFFF. При этом коды выше FFFF во многих программах вообще не работают (Опера, MySQL, наш форум) и очень часто недостаточно протестированы и служат источником многих ошибок.

Вообще, мне кажется, что уникод (по крайней мере современный)—это зло. К сожалению, что ничего (из распространённого) лучшего нет. :'(

Спасибо... я когда-то сотрудничал с Центром национальных языков ИБМ в Торонто по разработке стандарта Юникод (в конце 80-ых). Очень интересно было узнать, во что это все превратилось...  Увы, центр распустили в начале 90-ых из-за нехватка средств, когда ИБМ переживал кризисные годы.

jvarg

Цитата: mnashe от января 11, 2012, 11:07
Большая разница.
У меня кодовая страница — Windows-1251. Для DOS, соответственно, 866.
А редактор работает и с кириллицей, и с ивритом, и даже позволяет отображать их на экране одновременно.
Сохраняете с экрана разные куски в разных файлах, а потом тем же акелпадом кодируете их правильно, и сшиваете.

Геморно? Да. А не фиг было программы под ДОС писать...
Все боятся быть обвинёнными в ксенофобии. А вот в русофобии никто.
(© Захар Прилепин)

mnashe

Цитата: jvarg от января 12, 2012, 14:53
Сохраняете с экрана разные куски в разных файлах, а потом тем же акелпадом кодируете их правильно, и сшиваете.
Геморно?
Да не, нормально — не намного сложнее, чем переписать весь экран вручную.

Цитата: jvarg от января 12, 2012, 14:53
А не фиг было программы под ДОС писать...
А под что их ещё писать в 1993 году?
К моменту появления Windows это уже была мощная система с кучей возможностей, некоторые из которых в Windows тогда отсутствовали или были реализованы очень криво, а кое-какие фичи уникальны до сих пор.
А написать пару мелких утилиток, сообщающихся с Windows, — это всё же несколько легче, чем переписывать под Windows добрую сотню тысяч строк.
Адепт единственного числа и безродового склонения
שָׁלוֹם עֲלֵיכֶם!

jvarg

Цитата: mnashe от января 12, 2012, 15:01
Цитата: jvarg от января 12, 2012, 14:53Сохраняете с экрана разные куски в разных файлах, а потом тем же акелпадом кодируете их правильно, и сшиваете.
Геморно?
Да не, нормально — не намного сложнее, чем переписать весь экран вручную.
Ну, вручную все ж посложней будет  :??? :-\
Все боятся быть обвинёнными в ксенофобии. А вот в русофобии никто.
(© Захар Прилепин)

mnashe

Цитата: jvarg от января 12, 2012, 15:03
Ну, вручную все ж посложней будет  :???
Хорошо, попробуйте.
Вот Вам не самый сложный случай: :smoke:
Адепт единственного числа и безродового склонения
שָׁלוֹם עֲלֵיכֶם!

Dme3

Цитата: mnashe от января 12, 2012, 15:01
это всё же несколько легче, чем переписывать под Windows добрую сотню тысяч строк.
Программы на пару тысяч строк кода—это очень... неправильно. Программы должны быть маленькими и простыми.

mnashe

Цитата: Dme3 от января 12, 2012, 17:40
Программы на пару тысяч строк кода—это очень... неправильно. Программы должны быть маленькими и простыми.
Так это фактически рабочая среда (framework), в которой написано сотни программ, среди которых и довольно большие, и маленькие и простые.
Я не думаю, что, скажем, Total Commander — такая уж маленькая и простая, особенно если считать все плагины.
Адепт единственного числа и безродового склонения
שָׁלוֹם עֲלֵיכֶם!

Быстрый ответ

Обратите внимание: данное сообщение не будет отображаться, пока модератор не одобрит его.

Имя:
Имейл:
Проверка:
Оставьте это поле пустым:
Наберите символы, которые изображены на картинке
Прослушать / Запросить другое изображение

Наберите символы, которые изображены на картинке:

√36:
ALT+S — отправить
ALT+P — предварительный просмотр