Вход в Зоопарк ручных компьютеров
Вход > Палеонтологический музей > Жизнь Замечательных Людей > Константин Салий
--

Константин Салий kis@aha.ru
Создатель первого русификатора для Psion

Константин Салий в офисе

Я жил (и живу) в Зеленограде, а работал (и работаю) в Москве, в середине Ленинского проспекта. Дорога в один конец -- около двух часов, с "пробками" на Ленинградском проспекте даже больше. В начале 1995 г. сложилось так, что работы было очень много, времени было очень жаль, а доход стал настолько разумным, что я уже стал подумывать о каком-нибудь решении, позволяющем работать в дороге. Ноутбук отметался сразу -- дорогой, тяжелый (а в транспорте иногда и стоять приходится!)... Хотелось иметь что-нибудь компактное, но соответствующее нескольким условиям: возможность набирать тексты разумных размеров (несколько килобайт) и перенос их на ПК.

Рынок палмтопов в Москве тогда был еще крайне беден. Существовавшие машинки Hewlett-Packard не понравились своей ДОСовской основой: возможности как бы есть, а как их использовать? Где найти столько старого софта, чтобы использовать ее по полной программе? Нужен был либо совсем дешевый, минималистский, вариант, либо -- если уж деньги солидные платить -- то, чтоб цену отрабатывал по полной программе...

Newton -кирпич с "тыкалкой", клавиатура удобней, да и на ПК передать проблемно...

Всерьез рассматривал варианты записных книжек Citizen и Casio. Цена казалась приемлемой, возможности -- подходящие... Но, когда узнал, что комплект из кабеля и ПО для обмена с ПК стоит столько же, сколько собственно книжка, стало грустно...

И вот на очередном "Комтеке" забрел в один дальний невзрачный угол... Надо сказать, что тот поход на "Комтек", в отличие от предыдущих, был строго целевой: найти решение проблемы. Так вот, в том углу лежал Psion Series 3a (512 Кбайт), который показывал "Торговый Дом Родити". Экспозиторы -- Геннадий Борцов и Любовь Бровина -- в оба уха расписывали достоинства машинки, но изделие говорило само за себя. Очень удобная клавиатура, прекрасный набор прикладного ПО, связь с ПК... Больше всего меня потрясла вытесняющая многозадачность и "отзывчивость" приложений. Процессор-то -- хилый, а я -- программист. Понятно было, что разработчики потрудились на славу, продукт уникальный. Да еще встроенный язык программирования -- можно и что-то свое написать! А время жизни от пары батареек -- просто мечта! Но, если так много возможностей, сразу возник вопрос: а по-русски можно? Не то, что очень надо, но ведь гораздо больше возможностей! Ответ был неутешительным. Более того, мне объяснили, что такая красивая цена (435 долл.) -- на грани себестоимости именно потому, что не берут без русского... И тогда мы заключили устный договор: после "Комтека" я беру машинку с кабелем, мне предоставляют всю имеющуюся документацию по программированию на Си (SIBO C SDK), и я пытаюсь сделать русификатор. Что будет потом -- посмотрим потом.

Конец недели был посвящен ползанию по Интернету (ох и медленно тогда это было!) в поисках информации о Psion. Общее мнение мировой общественности меня еще больше убедило в верности решения, а вот что касается языка... В FAQ news:comp.sys.psion (подгрупп тогда не было) на вопрос "как изменить раскладку клавиатуры" ответ был прост: "не делается". И это с учетом того, что прошло уже 4 года с появления Series 3...

"Комтек" прошел, и после долгих разъездов по Москве (машинки -- на Новом Арбате, кабели -- в Сетуни) я получил свой комплект. В "Родити" мне дали SDK, 4 толстых тома... Но там не было ничего. Связался по электронной почте с программистами Psion - говорят, не делается русификатор, не предусмотрено! Правда, показали мне некое решение от "Офис-Клаба" (они, вроде, первыми завезли в Москву S3, которые до сих пор можно встретить на вторичном рынке, новенькие -- не далее, как этой весной привозили мне на русификацию!), программа, которая обеспечивала ввод кириллицы, но только русскими, и только на S3... Такая кривизна никого не устраивала.

Тогда и была мною написана первая программа для Psion -- HexView, утилита просмотра (впоследствии и редактор) дампов памяти. С ее помощью извлек содержимое ПЗУ, прошелся дизассемблером... Через неделю имел откомментированные исходники всех интересных подпрограмм EPOC16. Еще через неделю (начало июня) -- первый прототип русификатора, написанный на OPL(!), жил у меня на машине.

Интересно то, что операционная система содержала-таки сервисы, созданные для программной локализации. Кстати, сделанные с ошибкой, которую пришлось потом обходить. Впоследствии я узнал, что это не единственный пример, когда на отдельные подсистемы, которые создали программисты Psion, не сохранилось у них ни документации, ни даже памяти -- например, протокол обмена данными по последовательному порту также был ими утерян, и для PsiWin им пришлось написать новый протокол и отдельный драйвер...

Назад к прототипу... Он жил, но было понятно, что окончательный вариант надо писать на Си и ассемблере, SDK стоил очень дорого, а предстояло сделать коммерческий продукт! Тогда и был заключен договор с "Родити": они предоставляют средства разработки, я пишу русификатор, они получают права на его распространение. Был и материальный интерес: плата за русификатор окупала "железо", и оставалась еще вполне приличная сумма. Но, если честно, материальный интерес был не главным. За короткое время общения с Psion я стал ревностным поклонником этой машинки, и мне очень хотелось, чтобы она получила распространение у нас в стране. Нашлись даже знакомые, которые были готовы ее купить... но только с русификатором!

Превращение русификатора в коммерческую программу не позволяло ограничиться только возможностью ввода кириллицы на Psion. Необходимо было также обеспечить обмен документами с ПК, печать на русифицированные принтеры (EPOC16 печатает только встроенными в принтер шрифтами), работу с факсом... Это потребовало дополнительных исследований и "кодокопательств"...

К началу августа был готов RusLat 1.0. По полной программе: использование русского языка во всех прикладных программах, печать, факсы, возможность обмена с ПК (тогда PsiWin еще не было). Пришлось написать еще несколько программ на OPL для работы с шрифтами (уже существовавшие редакторы шрифтов меня не устраивали). Собственно, изготовление и "вылизывание" шрифтов (экранных и факсовых) и заняло больше всего времени. В конце августа русификатор поступил в продажу, и моментально был продан весь склад Psion! Эффект был ожидаемый, но масштабы -- совсем неожиданные. Цена Psion сильно возросла, но спрос стабильно превышал темпы завоза!

Тогда же, в августе в Москве появились только что выпущенные модели -- Psion Series 3c с 1- и 2-Мбайт ОЗУ. Пришлось выпустить версию 1.01, новая версия ПЗУ была несовместима с 1.0, но зато удалось лучше понять принципы внутреннего устройства... Версия 1.01 была, можно сказать, окончательной. На всякий случай она содержала проверку версии машинки и отказывалась работать на том, что не проходило через мои руки. Но отличия всех последующих версий были чисто косметические. Хотя не совсем!

Было еще некоторое количество старых Series 3, которые тоже хотелось "окучить". Но они имели принципиальные отличия, настолько принципиальные, что русификатор для S3 вынужден обращаться к данным ядра операционной системы по абсолютным адресам. Получилась жесткая зависимость не от типа машинки, а от версии ПЗУ в ней. Правда, когда мне попала вторая разновидность ПЗУ, я написал некий поиск нужных мест, который оказался работоспособным. С тех пор русификатор работает на всех пробегавших мимо "трешках", но до сих пор я предупреждаю, что не гарантирую работоспособность на неизвестных версиях, пока не попробую.

Осенью, тесно общаясь с сотрудниками "Родити" (кстати, той же осенью ТД "Родити" прекратил свое существование), которые развивали направление Psion, я узнал удивительную вещь: оказывается, уже достаточно долгое время шла работа над полностью русифицированным Psion! Работа шла безумно медленно. Сначала -- со стороны переводчиков ("Родити"), потом --сам Psion утратил к этому интерес и занимался этим проектом постольку-поскольку... Я подключился к этой работе где-то в конце ноября. Посмотрев, как программисты Psion реализовали поддержку второго языка, я пришел в ужас: их подход означал потенциальную несовместимость с мало-мальски культурно написанными программами, включая отдельные пакеты самого Psion (типа Psion Money)! Кроме того, русская версия базировалась на версии ПЗУ 3.21, а на тот период уже существовала 3.40, в которой, кроме поддержки большой памяти, было исправлено много ошибок, в том числе и во встроенных приложениях. Понятно, что поддерживать в параллель две версии (русскую и "остальную") в Psion никто не собирался, отдача от русской версии была призрачна, и чем дальше - тем призрачней.

Я предложил другой вариант: фактически, записать RusLat в ПЗУ (с незначительными изменениями). Это бы позволило использовать самую последнюю версию ОС и приложений (а описания меню и диалогов и так можно было переводить -- ресурсы отделены от кода). Более того, аналогичное решение тогда уже было применено в WorkAbout - эта модель позволяет иметь 2 варианта таблиц клавиатур, с переключением по типу RusLat (т. е. одной из найденных и недокументированных функций). Psion отказался вносить изменения в проект... Даже минимальные изменения (вроде, чтобы горячие клавиши были независимы от текущего языка, а вместо частых кнопок "да/нет" использовать универсальные Enter/Esc) были отвергнуты.

Маленький нюанс, который может быть интересен. Когда передо мной стоял выбор кодировки для русификатора, я остановился на кодировке Windows (а для европейских языков в Psion использовлась кодировка DOS) по двум причинам: чтобы упростить обмен документами и чтобы максимально сохранить возможность работы с поддерживаемыми "неанглийскими" языками. При этом я исключил букву "ё". Ей даже посвящена отдельная глава в "Руководстве пользователя" русификатора. Причина? Ее код совпадал с кодом символа ©. А авторские права надо соблюдать! :)

В процессе работы над русификатором (т. е. в процессе поиска дыр в ОС) в качестве побочного эффекта была найдена крайне неприятная дыра: возможность снятия пароля с Psion. На тот период считалось, что парольная защита достаточно прочна, обойти пароль можно только сделав полный "резет" (с потерей всех данных). Дыра была детально документирована и отослана в Psion, вместе с предложением по ее закрытию. Но, насколько мне известно, все машинки на EPOC16 до сих пор имеют эту дыру! И это, кстати, очень полезно для пользователей русификатора: если пароль набран по-русски и русификатор "слетел" (не обязательно из-за недостатков русификатора!), то, как правило, набрать пароль уже нельзя. Причина в том, что пароль преобразуется в большие буквы без надстрочных и подстрочных знаков (типа "й" переходит в "И"), а русские буквы в основном накладываются на не-буквы. Таким образом, при отсутствии русификатора (=правильной таблицы) почти никакой символ не перейдет в код русских заглавных букв.

Насколько мне известно, до сих пор, кроме меня, никто не обладает программой снятия паролей, а я это делаю только для пользователей русификатора. Несмотря на выделенный текст в руководстве, случаи паролей по-русски бывают... Например, так: "новый русский" купил Psion с русификатором, посадил секретаршу вколотить свою записную книжку с контактами в базу данных, потом сунул книжку в шредер, поставил пароль по-русски и отключил русификатор. Да, вот так, все сам своими руками и сделал! Через час он был у меня, предлагая что угодно за восстановление информации... Я его спрашиваю: "Руководство читали"?
- Да, говорит, читал, когда русификатор выгружал, прям по пунктам все делал!
- А про пароль читали?
- Читал...
Это, пожалуй, наиболее поучительная история, связанная с русификатором, хороший урок программистам: и в страшном сне не приснится то, на что способен пользователь в здравом рассудке!

Несколько месяцев назад ко мне обратился за помощью некий владелец 3а. Его проблема никак не была связана с русификатором. На его машинке я с удивлением обнаружил RusLat версии 1.0 (их было очень мало). Хозяин утверждал, что как купил ее летом 1995 г., так и пользуется... Я все-таки заодно обновил ему версию, так, на всякий случай. Говорят, русификатор работает и на 3mx, но я, к сожалению, ни разу не держал в руках это изделие, последнее с EPOC16.

Что касается "технических историй" вокруг русификатора, поучителен пример с пакетом PsiMail. Я занимался его тестированием на раннем этапе, в основном чтобы добиться корректной работы с русификатором и с русской 3а (которая тогда была в виде тестового образца). Подправить самому пару файлов, чтобы корректно отправлялись письма по-русски и читались русские Web-узлы все-таки пришлось. Но одно безобразие осталось непобедимым! Псионные программисты не придумали ничего лучше для отображения тега <hr>, как рисовать его псевдографикой! Это им показалось проще, чем линию нарисовать! Итог -- наши пользователи вынуждены наблюдать кучу букв "Д" вместо горизонтальных линий :-( Есть в программистском мире вещи выше моего понимания...

Еще нетривиальная техническая деталь. В процессе исследований выяснилось, что, без дополнительных усилий, можно перевести на русский язык часть текстовых строк, типа названий месяцев и сообщений системы. Удобно, особенно для важных сообщений, которые появляются буквально на пару секунд ("Замените резервный элемент!"). Так вот, поскольку русский язык много длиннее английского и не хотелось делать бессмысленных сокращений, пришлось шрифты делать не только красивыми и читабельными, но и чтоб переведенные строки помещались в отведенных для них местах. Такой вот компромисс...

Когда я еще боролся с дизассемблером, узнал, что чешские программисты сделали "чехификатор". Я попытался с ними связаться и предложить поделиться информацией либо провести совместную разработку. Они отказались от совместных работ, а за свои познания запросили... ну очень много. Потом оказалось, что их решение было сильно привязано к ПЗУ (еще круче, чем у меня на "трешках"). С появлением моделей с 1- и 2-Мбайт ОЗУ версий, а затем 3с и Siena им пришлось много переделывать... Потом они обращались с предложением о сотрудничестве, но мне это было уже неинтересно. Но исторически на поле локализации Psion они были первыми.

Жизнь сложилась так, что у меня было меньше месяца на написание русификатора для "пятерки", а остальными (5mx и т. д.) я просто не занимался. Про EPOC32 я знаю очень мало, минимум, необходимый для написания русификатора... да и еще меньше. Дело в том, что я начинал работать с тестовой машиной. Потом получил ПЗУ версии 1.00 -- она отличалась от тестовой. Потом вышла 1.01, тоже с отличием, и я "развил" русификатор и на нее. А вот то, что в 1.01 появилась новая возможность, упрощающая локализацию, пропустил за нехваткой времени. В результате та старая технология на 5mx и далее (ER5) не работает, а новую я знаю только понаслышке. Кроме того, я так и не удосужился изучить ассемблер ARM, поэтому работал глазами и головой (дизассемблирование эмулятора много не дало -- он несколько по-другому работает)...

Вот, собственно, вкратце история создания RusLat для EPOC16 и немного вокруг нее. Я до сих пор считаю палмтопы Psion наиболее совершенными изделиями в этой области. И, к сожалению, до сих пор считаю, что если бы отдел маркетинга Psion PLC был хоть чуть-чуть получше, Psion давно бы монополизировал мировой рынок PDA...

Июнь 2000

RB2 Network

RB2 Network
--

Просим при воспроизведении материалов этого сайта, делать ссылку на Зоопарк ручных компьютеров
Copyright © 1999-2000 Зоопарк ручных компьютеров