21 мая в 18:06

Программирование для Palm в 2017 году

Я, в трезвом уме и доброй памяти, рассказываю как, в 2017 году начать программировать для исчезнувшей платформы.

Шло 12 мая 2017 года. Лежащий снег за окном и включённое отопление навевали мысли о вечном, и мой взор упал на шикарный промышленный КПК под управлением PalmOS.


Терминал сбора данных

Когда-то он мне был отдан, но я им ни разу так и не пользовался. По началу у него не было шнурка для СОМ-порта. А потом в процессе искусственной подпайки к контактам — был оборван шлейф от материнской платы кредла до разъёма порта КПК. Так и лежал мёртвым грузом.

И восхотел я реанимировать данный пальм, а чтобы была мотивация, решил для начала поглядеть какие бывают эмуляторы под linux, дабы посмотреть какое ПО есть и стоит ли овчинка выделки. И с поиском, установкой эмулятора немного увлёкся… Снега, холодная погода мая так повлияли на меня, что я решил попробовать писать для данного КПК. Тем более, что Palm — это КПК моей студенческой молодости, тогда это был безумно крутой гаджет. Тогда я не умел программировать под них, но очень хотел. Спустя больше 14 лет (почувствуй себя старым, ага) — решил таки попробовать это сделать.

Если вам интересно, как эмулировать данный КПК, а ещё лучше писать для него ПО, то поехали читать дальше.

Что же нужно, чтобы начать разрабатывать под Palm?


Этот вопрос может кому-то показаться простым: мол, скачай компилятор и в путь. Да, начать разрабатывать под пальм очень просто. Простота такая же как на всем известной картинке:


Самое забавное, что пользователям Windows либо надо купить компилятор Metrowerk's CodeWarrior for Palm, либо превратить свою Windows в UNIX с помощью cygwin и далее примерно всё так же как будет описано ниже для linux. Не знаю как сейчас обстоят дела с современными виндами, но путь явно настоящих извращенцев и, судя по множеству форумов и статей, не всем по зубам. Так что дальнейшие действия описываются для Linux Mint (читай ubuntu 14.04). Путь рабочий.

Итак, что же нам нужно для разработки, отладки, проверки нашего ПО:

  • Эмулятор Palm (POSE).
  • Образ ROM для POSE.
  • PRC tools (GCC, компилирующий программы для PalmOS).
  • PalmOS SDK.
  • PilRC (компилятор ресурсов).

Эмулятор Palm POSE (Palm Operation System Emulator) — программа, которая позволяет запускать всевозможные программы без копирования их на Palm. Что очень удобно. Особенно для тех, у кого Пальма нет, а хочется поиграться с разным ПО. Но эмулятор не будет работать без образа ROM — это, собственно образ прошивки живого КПК. Снять его можно тем же POSE с настоящего КПК, либо скачать в интернете. PRC tools — это, собственно говоря, набор инструментов для компиляции программ (компилятор, линковщик, отладчик). Как это не печально, но PRC tools не будет работать без PalmOS SDK под конкретную версию PalmOS. На то чтобы понять это, ушло пару дней чтения мануалов. Ну и последнее — это компилятор и просмоторщик ресурсов PilRC, штука которая позволяет готовить бинарные файлы отвечающие за отрисовку меню и замены картинок на экране.

В чём сложность?


Всё это можно было взять на официальном сайте palmos.com. Но увы, и ах, фирма Palm умерла в 2010 году (поглощена Hewlett-Packard) и сайт их умер.

Большая часть ссылок в интернете — битая. В результате поиск и установка всего ПО превратилась в занимательный квест по поиску пакетов, документации, инструкций, тестирования, который вылился в данную статью.

Путей по получения данного софта достаточно много. Один из джедайских линукс путей был — всё собрать из исходников и даже честно пытался…


Но понял, что это совсем гемморный путь Здесь я буду рассказывать о самом простом и быстром пути (может не оптимальном).

Все пакеты, архивы и ПО, о котором говорится в статье было заботливо собранно в единый архив. Чтобы вы могли даже спустя 10 лет наткнувшись на данную статью, в порыве ностальгии начать программировать для PalmOS.

Эмулятор PalmOS


Самый интересный, и наверное востребованный параграф в данной статье. Собирать программы мало кто будет, а вот попробовать погонять старые игрушки или разное ПО — это пожалуйста.
Для его установки нам понадобится:

  • сам эмулятор POSE
  • шкурки (skins) различных КПК
  • файл ROM-КПК, которого мы хотим эмулировать.

Эмулятор был найден мной вот тут (файл pose_3.5-9.1ubuntu2_i386.deb в архиве). Скачиваем и устанавливаем его командой

sudo dpkg -i pose_3.5-9.1ubuntu2_i386.deb

Шкурки были найдены вот тут вместе с исходниками POSE. Это файл emulator-skins-19.tar.gz в архиве. Распаковываем данный архив в домашнюю папке и переименовываем её в Skins или skins. В результате внешний вид будет соответствовать реальной железке. Это просто приятный бонус, без которого и так всё будет работать.

Чтобы эмулятор заработал, нужно ему дать файл с ROM. Ромы были найдены вот тут. Лично я использую palmos40-en-m505.rom. Запускаем POSE из консоли, в той папке откуда брать ROMы, так как данный софт не любит русские буквы. Правой кнопкой тычем на пустом окне, выбираем File-New в открывшемся окне выбираем ROM file и сам файл.


И жмём OK. Если всё сделано правильно, то получаем рабочий эмулятор, в котором можно уже запускать практически любой софт Palm (за исключением работы с железом).


Готовый эмулятор

Самый приятный бонус, что инсталляция программ идёт в два клика и очень быстро, в отличии от установки на живой КПК. Это важно при написании и отладке ПО.

Тулчейн и SDK


Для того, чтобы все начало функционировать, нужно поставить еще несколько вещей. А именно: PRC tools, SDK для palm'а и PilRC. PRC tools — это порт нашего любимого GCC, но с выходным форматом для PalmOS. В SDK находятся несколько библиотек и куча заголовков для Palm API. Наконец, PilRC нужен для компиляции ресурсов. Ниже говорится о том, как установить PRC tools и SDK.

Исходники PRC tools можно найти тут. Это связка заплаток для binutils, gdb, GCC и компоновщика, дающая поддержку PalmOS. Лично ставил ставил по инструкции. Инструкция ниже — просто копия её. Можно не заниматься скачиванием пакетов, а просто установить всё из папки в архиве prc-tools:

cd /tmp
#установка эмулятора
 wget http://ftp.gnome.org/mirror/cdimage/snapshot/Debian/pool/main/p/prc-tools/prc-tools-arm_2.2.90.cvs20030306-6_i386.deb
 wget http://ftp.gnome.org/mirror/cdimage/snapshot/Debian/pool/main/p/prc-tools/prc-tools-doc_2.2.90.cvs20030306-6_all.deb
 wget http://ftp.gnome.org/mirror/cdimage/snapshot/Debian/pool/main/p/prc-tools/prc-tools-m68k_2.2.90.cvs20030306-6_i386.deb
 wget http://ftp.gnome.org/mirror/cdimage/snapshot/Debian/pool/main/p/prc-tools/prc-tools-utils_2.2.90.cvs20030306-6_i386.deb
 wget http://ftp.gnome.org/mirror/cdimage/snapshot/Debian/pool/main/p/prc-tools/prc-tools_2.2.90.cvs20030306-6_all.deb
 wget http://old-releases.ubuntu.com/ubuntu/pool/universe/p/pilrc/pilrc_3.2-3_i386.deb
 
sudo apt-get install libstdc++5
sudo dpkg -i *.deb

Всё, теперь у нас появился рабочий компилятор. Но он нифига не компилирует, так как вместо заголовочных файлов у нас просто заглушки. Нужно установить сам SDK. Разработку планировал вести для PalmOS 3.5 и брал его здесь, там же есть и для более поздних версий PalmOS (4-й и 5-й).

Аналогично, можно не заниматься закачиваением файла wget, а просто перейти в папку sdk-3.0 и сделать всё из неё.

#качаем sdk
wget http://web.archive.org/web/20141224205502/http://cdn.xenu.tk/pub/palm-archive/pub/programming/sdk/3.0/sdk35.tar.gz
#подготавливаем папки для него
sudo mkdir /usr/local/palmdev
sudo mkdir /usr/local/palmdev/sdkpalmos-3.5
#распаковываем его
tar -xzf sdk35.tar.gz
#копируем содержимое с правами суперпользователя
sudo cp -r Palm\ OS\ 3.5\ Support/* /usr/local/palmdev/sdkpalmos-3.5/
cd /usr/local/palmdev/sdkpalmos-3.5/
#переименовываем папки в нормальный вид (не знаю почему в архиве назывались вот так)
sudo mv Incs include
sudo mv GCC\ Libraries lib
#САМАЯ ГЛАВНАЯ ОПЕРАЦИЯ!
#Мы говорим нашему тулчейну, где у нас теперь лежит SKD и какой мы используем по умолчанию.
sudo palmdev-prep /usr/local/palmdev/sdkpalmos-3.5/

У SDK есть несколько полезнейших архивов:

  • sdk35-docs.tar.gz — архив с документацией. По-моему просто находка!
  • sdk35-examples.tar.gz — замечательный архив с примерами. Настоятельно рекомендую их скачать или взять из архива.

На данном этапе мы можем даже собрать примитивный helloword! Создаём файл hello.c. Пишем в него

#include <PalmOS.h>

UInt32 PilotMain( UInt16 cmd, void *cmdPBP, UInt16 launchFlags)
{
  EventType  event;
  char       *message = "Hello, world!";
  if ( sysAppLaunchCmdNormalLaunch == cmd)
  {
    WinDrawChars( message, StrLen(message), 55, 74 );
    do {
      EvtGetEvent( &event, evtWaitForever);
      SysHandleEvent( &event);
    } while (event.eType != appStopEvent);
  }
  return 0;
}


И компилируем последовательностью команд

m68k-palmos-gcc HelloWorld.c -o hello
m68k-palmos-obj-res hello
build-prc Hello.prc "Hello" HELO *.hello.grc

Заливаем файл hello.prc в наш эмулятор, запускаем и получаем


Компилятор ресурсов PilRC


В общем-то может показаться, что усё, можно программировать. Так-то оно так, и все программы будут теперь компилироваться, собираться и запускаться, но работать не будут! Так как им ещё нужно компилировать ресурсы. (логично, блин). Для компиляции ресурсов нам нужен сам компилятор PilRC, а для их просмотра PilRCUI. Данный проект жив и здоров, исходники обитают тут. Настоятельно рекомендую скачать исходники (есть в архиве), так как там полным полно отличной документации. А сами пакеты мной были обнаружены в старых репозитариях убунты. Для компилятора пакетов нужно скачать файл pilrc_3.2-3_i386.deb (есть в архиве)и установить его командой

sudo dpkg -i pilrc_3.2-3_i386.deb

Просмоторщик ресурсов в моей текущей версии ОС мне установить не удалось. Точнее удалось, но он вылетает с ошибкой (которую я не смог исправить). Привожу примерный вариант установки: для его установки надо установить дополнительные библиотеки. Было потрачено пару дней, чтобы удовлетворить все зависимости. В гугле меня просто забанили.

Надо скачать с сайтов 1 и 2 файлы: ibglib1.2ldbl_1.2.10-19build1_i386.deb, libgtk1.2_1.2.10-18.1build2_i386.deb and libgtk1.2-common_1.2.10-18.1build2_all.deb. Всё это было сложено в папочку либс в глобальном архиве. После этого их ставим

sudo dpkg -i libgtk1.2-common_1.2.10-18.1build2_all.deb libglib1.2ldbl_1.2.10-19build1_i386.deb libgtk1.2_1.2.10-18.1build2_i386.deb

Но, увы, это всё чудо запускается, но при попытке открыть проект — падает с ошибкой сегментирования. Всё это успешно пока работает только в ubuntu 8.04 стабильно ставиться из репозитариев и для просмотра пользуюсь ей, монтируя по SSHFS папку с проектом.

Настоящий графический HelloWord!


Пришла пора показать как написать настоящую графическую программу для Palm! Не буду изобретать велисипед и просто покажу пример из Туториала.

Программа состоит из нескольких файлов:

  • hello.bmp — полноразмерная иконка
  • hellosmall.bmp — миниатюрная иконка
  • hello.c — исходный файл программы
  • hello.h — заголовочный файл
  • hello.rcp — файл ресурсов (текстовый)
  • Makefile — и сам файл сценария сборки

Не буду подробно останавливаться на особенностях разработки и программирования, если будет интересно вы можете сами посмотреть данные файлы в текстовом редакторе. Интересно посмотреть текстовый файл ресурсов, как же он будет выглядить на КПК. Для этого и нужна программа PilRCUI. Скриншот из Ubuntu 8.04


Компилируем всё командой make и заливаем получившийся hello.prc в наш эмулятор.


Иконка


Запуск


Просмотр информации
Окей, скажете вы. Эмулятор — это хорошо, а как же живой КПК? Их есть у меня! Пройдясь по друзьям, смог откопать старого друга, который служил мне верой и правдой в студенческие времена. Palm m100. И там эта программа успешно работает!


Зачем это всё нужно, и что же дальше?


Зачем я это сделал — не знаю. Потому что могу, как в старой доброй картинке.


Меня просто пёрло, вот и сделал. Если вы думаете, что в наше время никто не пишет для PalmOS, то как оказывается это не так. Когда я искал, чтобы прикольного написать, то подумал о игре 2048, в которую рубится половина вагона метро. И как оказалось, есть несколько их версий. Например вот.


Написана совершенно недавно. Так, что никогда не поздно учиться программировать для пальмов.

О железе


Если вам интересны подобные посты о КПК, и у вас внезапно есть старые ненужные КПК особенно семейства Palm, Psion (с проводом для СОМ-порта), то я с радостью приму их в дар, для написания подобных постов.


Парк КПК c linux, который пришлось раздать...

Например, можно рассказать о том как поставить Debian на Psion, сделать локальный репозитарий и выйти с него в интернет. У меня в ЖЖ можно почитать всякие мои извращения по теме по тегу psion, КПК, jornada, jornada 720.

Полезные ссылки:

1. Главный архив с ПО, которое вам не нужно будет искать по всему интернету по битым ссылкам
2. Очень толковое описание на русском архитектуры PalmOS и пример программы
3. Неплохое описание вхождения программирования для Пальмов с живыми ссылками.
4. Отличный туториал программирования графических приложений от самых азов до профессионализма.
5. Различные исходники описанием на русском
Сергей @dlinyj
карма
451,7
рейтинг –0,2
Пользователь
Похожие публикации
Самое читаемое

Комментарии (106)

  • +5
    Реквестирую «Программирование для Symbian в 2017»:)
    • 0
      Поддерживаю, тоже есть желание попробовать такое спустя много лет :) Много было разных Symbian смартов, но больше всего запомнился — 6630, превосходный девайс с одной из самых удобных клавиатур своего времени:
      6630 - Symbian 8.0a FP2
      image
    • +1
      Пробовал программировать для Symbian в 2010. Там своя среда на основе Eclipse (carbide c++, кажется) и абсолютно ужасный процесс отладки либо на отваливающемся устройстве, либо на виснущем эмуляторе. А, и ещё hello world состоит из 5 классов. А, и ещё при любом изменении весь проект пересобирается полностью, это несколько минут для того же hello world. А, и ещё своя реализация исключений. И упоротая схема наименования классов и методов. А, и ещё там есть дофига видов строк… Зато нативно поддерживается векторная графика в ресурсах — что-то, что андроид научился только начиная с 5.0.
      • 0
        Есть отладка по wi-fi для symbian 9.3+
    • +2
      До сих пор юзаю Nokia 6680 и 6681 — ничего более удобного не видел до сих пор.
      Так же использую E72 — полторы-две недели живёт от одного заряда :)

      Есть всё нужное мне ПО, удобны в использовании.
    • +2
      А чего Symbian? Давайте тогда уж EPOC32.
    • 0
      Недавно собрал GCC 7.1.0 с binutils&gdb :-)
    • 0
      Для Symbian UIQ3 еще более высший пилотаж бы был!
  • +5
    Это великолепно. Автор, пусть в твоей жизни всегда всё-всё-всё будет хорошо. Правда.

    Я фанат пальмов, обладатель пары живых экземпляров. Правда, до серьёзного нативного программирования так и не дорос, но в своё время с удовольствием писал под PocketC (на самом пальме) и даже пользовался собственными утилитками в быту. А благодаря статье полез в гугль и нашел до сих пор работающий официальный сайт, где всё ещё можно скачать рантайм и компилятор. Куплю полную версию (раньше юзал крякнутую) и буду кодить, вводя текст с помощью Graffiti™, со слезами ностальгии на глазах. Жаль только, что старые исходники всё же потерял, хотя, помнится, куда-то их бэкапил даже.
    • +1
      Это великолепно. Автор, пусть в твоей жизни всегда всё-всё-всё будет хорошо. Правда.


      Спасибо большое за тёплые слова. Собственно для этого и писалась статья, чтобы вдохновить на подвиги!
  • +1
    У меня в начале нулевых тоже был палм, я тоже пробовал под него писать. Потыкался, ужаснулся, и плюнул. Особенно понравились ограничения памяти по умолчанию и приседания в гамаке, чтобы организовать доступ к остальным килобайтам. Через некоторое время купил КПК на PocketPC. После палма это было божественно. Embedded Visual Studio, нормальная файловая система, дебаг прямо на устройстве…
    • 0
      приседания в гамаке


      Что вы имеете в виду?
      • 0
        Это очевидно метафора, что сделать это сложно и неудобно.
    • +1
      Вот и у меня похожая ситуация. Если бы я был просто пользователем пальмы, сейчас, наверное, мне было бы мило пробовать писать под него софт. Но так вышло, что у меня был заказ на софтину а-ля «терминал сбора данных» на пальму тогда, в начале нулевых. И я до сих пор не могу забыть то отвратительное ощущение, особенно от «файловой» системы, если так можно было назвать ту штуку. Мне за свою жизнь приходилось писать софт под разные платформы, от МК-52 до AS/400. Где-то профессионально, где-то из любопытства. Были удобные, были неудобные. Но пальма — единственная, под которую это было делать откровенно неприятно.
      • +2

        А на мой взгляд реализация очень круто сделана, ведь файловой системы как токовой нет — там же по сути база данных в которой хранятся данные. Разве нет?

        • +1
          Да проблема в том, что там была не совсем база данных. Правильнее было бы это назвать «хранилище для строго типизированных файлов и низкоуровневый API для работы с ними». Ну т.е. вы могли сделать некую штуку в хранилище для хранения последовательности структур одинакового размера, ну и эти структуры читать оттуда или писать туда. Это долго, муторно, крайне неудобно. Из автоматизации, которую вам базы данных предоставляют, была разве что сортировка… и то, с помощью кастомного «сравнивателя» (хранилище-то понятия «атрибут», «столбец» и т.д. не знает, для него каждая запись — всего лишь безликий набор байт фиксированной длины). Хотите хранить что-то больше 64К или просто данные переменной длины, или работать с текстом — ухищряйтесь, боритесь с системой, мучайтесь :)
          Я понимаю, что ресурсы ограниченные, но
          а) десятилетие назад на ХТ, были которые ничем не лучше первых пальм, но там были и полноценные СУБД, и файловые системы
          б) PocketPC, существовавшие в это же время, вам могли предложить, опять же таки, и файловую систему, и embedded СУБД SQL Server Compact, которая вообще была полноценным SQL-движком со всеми плюшками.
          • +1
            Хотите хранить что-то больше 64К или просто данные переменной длины, или работать с текстом — ухищряйтесь, боритесь с системой, мучайтесь :)

            а в чём проблема хранить данные переменной длины? или текст?
            одно ограничение — запись не может быть больше 64кб.

            б) PocketPC, существовавшие в это же время, вам могли предложить, опять же таки, и файловую систему, и embedded СУБД SQL Server Compact, которая вообще была полноценным SQL-движком со всеми плюшками.

            только:
            a. цена была несколько другая;
            b. автономность тоже была несколько другая.

            вы сравниваете железки разных классов. если мне не изменяет память, то palm продавало свои железки как «organizer», а pocketpc позиционировался как носимый компьютер.
            • +2
              а в чём проблема хранить данные переменной длины? или текст?

              Проблема в том, что нет такой возможности «из коробки». Всё надо писать. Это время на разработку, это время на отладку, наконец, это просто рутинная работа, которая на других платформах давным давно была решена. Банальный текст, в случае обычного файла с последовательным доступом, вы просто добавляете в конец файла. Здесь вы должны считать запись, проверить, что «запись + новый текст < 64K» если меньше, то сохранить запись. Если не меньше, то добить до 64К, а остаток записать в новую запись. И т.д. Вот скажите, такие задачки вам в каком возрасте перестали быть интересны, в 12 лет или в 15 лет? Вот то-то и оно. Программирование, когда оно на 10% состоит из решения поставленной задачи, и на 90% из борьбы с ограничениями платформы, это отстой.
              a. цена была несколько другая;
              b. автономность тоже была несколько другая.

              Почему разных? Они были прямыми конкурентами.
              Если не брать в расчет совсем уж игрушечный Palm Zire (который действительно, по сути, и есть органайзер с возможностью немного попрограммировать), цена у них была вполне себе одинаковая. Младшие PocketPC 2002 стоили порядка $250, средние $350-400. Palm с цветным экраном в начале нулевых тоже стоил $250-$400 в зависимости от наворотов. Автономность — да, если Zire, то другая. Если же цветной TFT-экран, то такая же.
              • +1
                Если не брать в расчет совсем уж игрушечный Palm Zire

                эээ… я про модели ДО palmos5.
                мы под свои проекты брали sony sj20, цена была порядка сотни долларов. даже на сотне устройств разница в бюджете была более, чем ощутимая.

                а что пошло дальше с palmos5 — я уже писал своё мнение, извращение. но совместимость, совместимость, совместимость.

                Банальный текст, в случае обычного файла с последовательным доступом, вы просто добавляете в конец файла. Здесь вы должны считать запись, проверить, что «запись + новый текст < 64K» если меньше, то сохранить запись. Если не меньше, то добить до 64К, а остаток записать в новую запись.

                Программирование, когда оно на 10% состоит из решения поставленной задачи, и на 90% из борьбы с ограничениями платформы, это отстой.

                когда потребовались логи — сел и написал, пара десятков строк кода, наверное. ну чуть больше обвязки, чем на обычном open/write/close, но я бы не сказал, что на это ушло 90% времени, которое я кодил проект.
                да и вообще, на кодинг ушло не так много времени, основные трудозатраты — проектирование UI (не реализация, а обдумывание «как оно может выглядеть», «как минимизировать число тапов при типичных действиях» и т.п.)

                P.S. вот прямо сейчас занимаюсь хранением логов в nor flash. страницы по 4кб, erase/битовая запись, обработка ситуаций «а вдруг у нас внезапно отключили питание».
                по сравнению с этим задача «сохранить текст в pdb» кажется вовсе смешной.
                да, 32-битная платформа (при желании и 64-битная — обычные raspberry), тот же linux, что и на десктопе — а возиться с низкоуровневыми вещами приходится.
                можно, конечно, плюнуть и хранить данные на sd-карте или usb-флешке, но опыт показывает, что ненадёжно. подключать внешние hdd/ssd? я уж лучше приделаю хранение данных в копеечной микрушке, оно и надёжнее, и удобнее.
                • 0
                  Коллеги, давайте не будем разводить холивар :)
          • +1

            Да, но ведь суть как я понял (на мой взгляд) была в том, чтобы снизить потребление энергии всего устройства, для того чтобы не было необходимости копировать программу из постоянной памяти в оперативную и там её выполнять. Программы выполнялись прямо с постоянной памяти, а в оперативке просто хранились данные пользователя. Таким образом они убили одним выстрелом двух зайцев — снизили энергопотребление и получили максимальную производительность при относительно слабом железе.


            Гыы) сам месяца 3-4 назад думал, а не найти ли рабочий девайс Palm в приемлемом состоянии и поиграться. Но на тот момент ничего путевого не нашел. Один товарищ подкинул идею попробовать на ARM замутить (или Arduino на базе SAM) свой вариант Palm. Портативный девайс в котором был бы определенный набор софта — хранитель паролей, почта, диктофон, плеер, читалка и т.д., что-то вроде личного ежедневника ~~с пасьянсом и куртизанками ~~ без бекдоров и с сумасшедшей идеей синхронизации в одну сторону через экран монитора) может кто пишет что подобное?

    • +1
      а мне нравилось писать под palmos, как раз во времена m68k, обделённым я себя не чувствовал.
      тулчейн есть? да, стандартный gcc.
      API описано? очень качественно, плюс потом исходники заметной части OS появились, заглядывал в них — всё просто.

      ограничения памяти — так проц-то 16-разрядный, что вы хотите. с другой стороны, это карманная записная книжка, зачем там мегабайты? идея состояла в том, чтобы сделать недорогое устройство с хорошей автономностью — это вполне удалось.
      да, файлов нет — вместо них несколько другая абстракция (не набор байт, а набор записей). всё хранится в памяти, если программист специально не извращался, то приложения запускались моментально.
      дебаг прямо на устройстве — это божественно после полноценного эмулятора от palmos?!? (полная виртуализая, даже ROM с реальной железки, ЕМНИП, плюс плюшки для разработчиков, связанные с отладкой — от возможности подцепиться gdb, до «гремлинов», которые тестировали UI, совершая беспорядочные действия).

      а вот с palmos5 у них не вышел каменный цветок.
      эмуляция m68k на arm, эмуляция старого API доступа к DB поверх NVFS (ох, сколько времени у меня ушло на вылавливание и обход глюков), попытка к старому API приделать web, мультимедию и т.п.
      похоже, это был временный/переходной вариант, но пока разрабатывали идеологически верный (наверное) palmos6 поезд ушёл…
      • +1
        «Полноценный эмулятор» был у всех — но поведение на реальном устройстве всегда отличалось. Помню веселые времена, когда printf("%i"); (или что-то подобное) спокойно работал в эмуляторе PocketPC, но падал безо всяких сообщений на реальном устройстве.

        А мегабайты — с ними просто. Я хотел игрушки делать, с графикой и анимацией. Но удовольствие работать с блоками памяти по 64кб и переписывать части кода в ассемблер m68k, чтобы добиться приличной скорости — не зашло. Я не осуждаю тех, для кого удовольствие повозиться с ограничениями платформы, есть множество любителей программирования под NES или Atari 2600, просто сообщаю что на фоне основного конкурента это была ужасная для программиста платформа — то, что делалось на PocketPC щелчком пальцев, на палме приходилось героически преодолевать.
        • 0
          Как было бы замечательно почитать такие ностальгические брюзжания с описанием почему не понравилось :)
        • +1
          «Полноценный эмулятор» был у всех — но поведение на реальном устройстве всегда отличалось. Помню веселые времена, когда printf("%i"); (или что-то подобное) спокойно работал в эмуляторе PocketPC, но падал безо всяких сообщений на реальном устройстве.


          вам не кажется, что вы сами себе противоречите?

          вот именно, что винды ЕМНИП была альтернативная реализация платформы, отличающаяся от реального устройства.
          а у palmos честный эмулятор, который полностью эмулировал конкретное устройство, вплоть до того, что (как я уже писал) эмулятор использовал «родную» прошивку с устройства.

          просто сообщаю что на фоне основного конкурента это была ужасная для программиста платформа — то, что делалось на PocketPC щелчком пальцев, на палме приходилось героически преодолевать.


          всё-таки не могу с вами согласиться. это не «ужасная для программиста платформа», а вы выбрали железо, не подходящее для задачи (грубо говоря, сели писать многопоточный web-сервер для arduino).
          • +1
            >а у palmos честный эмулятор, который полностью эмулировал конкретное устройство, вплоть до того, >что (как я уже писал) эмулятор использовал «родную» прошивку с устройства.

            Возьмем любой эмулятор старых консолей. Полностью эмулирует конкретное устройство, использует «родную прошивку», но при этом целый ряд игр под этим эмулятором работает неправильно.

            > а вы выбрали железо, не подходящее для задачи (грубо говоря, сели писать многопоточный web-сервер >для arduino).

            Нет уж, позвольте. Я выбрал железо формата Карманный Персональный Компьютер (КПК). Прямой конкурент на платформе Pocket PC 2002 предоставляет мне многозадачную 32-битную ОС, полноценную файловую систему, удобные средства разработки (даже Visual Assist работал). А компания Palm решила сэкономить, взяла доисторический микроконтроллер вместо процессора, и я из-за этого решения страдаю. Это не моя проблема, это проблема Palm, inc.
            • +3
              А мне казалось это у них фишка такая, дабы автономность (в смысле времени работы от батарей) была больше чем у покета…
              … правда были ещё покеты с MIPS
      • +1
        API описано? очень качественно, плюс потом исходники заметной части OS появились, заглядывал в них — всё просто.

        А можно поподробнее про сорцы?
        • +1
          вот нашёл:
          Palm OS 4.0 Limited Sources
          вроде бы были выложены куски и более старых версий, но не нашлось сходу, увы.
  • +1
    На указанном устройстве 4 больших кнопки… Так и просится ну_погоди.jpg
    Хотя наверное они используются для управления и нельзя подобное написать.
    • +1

      Насколько я помню на пальмах софт может все кнопки переопределять во время своей работы.

    • 0
      Можно, можно! И наверное даже есть. Но я что-то пока не понял, как у него с динамической индикацией.
    • +2
      В динамические игры на палме печально было играть — экран был медленным, как тетрисы 1001-в-1, быстрые движения смазывались и сильно падала контрастность. Клоны «Ну, погоди» — да были конечно, как и множество других, в том числе коммерческих, игр.
      А во времена заката платформы уже были цветные экраны и игры уровня варкрафт-2.
      • +2
        Задолго до заката платформы, во время уже местами цветных, но еще 160x160 экранов я купил фирменную карточку Game Pack. Помимо карточных игр, в суть которых я не вникал, и банальных шахмат/шашек/что там еще, на карточке было две «большие» игры. Первая — космическая стрелялка-скроллер с живой по тем временам графикой, где, надо сказать, тормознутость экрана играла на руку — четкая графика без сглаживания на огромных пикселях экрана 160x160 смотрелась так себе, но размытость динамических объектов при четких границах объектов неподвижных придавала картинке объем и в целом приемлемый вид. Второй игрой был SimCity, который динамичным не назовешь, но меня поразил сам факт адаптации такой игры под пальм. Сравнимого уровня игры мне потом попадались уже только на PPC (OpenTTD, например).
        • +1
          Второй игрой был SimCity, который динамичным не назовешь, но меня поразил сам факт адаптации такой игры под пальм.

          Минимальная конфигурация для работы SimCity, насколько я помню, включала в себя 48К ОЗУ и процессор Z80 (8 бит, 3МГц). Так что на пальме ему было весьма просторно и комфортно :)
  • +2
    За статью спасибо, прочитал с огромным удовольствием) Вопрос несколько не по теме. Если не секрет, чем Вы занимаетесь, что находите время на такого рода занятия? Можно даже не конкретно о себе рассказать если не хочется, а просто анаморфно чем другие такие первооткрыватели обычно по жизни занимаются. Просто у самого имеются идеи в голове такого же рода, но времени на них не хватает катастрофически. Спасибо)
    • 0
      На самом деле я раздолбай :). Сейчас провожу различные курсы по линуксу: программирование, администрирование. Посмотрите у меня в ЖЖ. Мне нравится свобода и время. Это самое ценное что у нас есть.
      • +1
        Ахах, ну да, это было даже несколько предсказуемо) А вообще идеальный вариант, и время свободное имеется, и заработок. Самому впору курсы прям начать вести)))
  • +1
    Для Palm еще был HandHeld Basic. Вполне такой себе Visual Basic под Windows чтоб программировать под Palm. Один из самых кстати лучших по размеру кода
  • +1
    И восхотел я реанимировать данный пальм

    И где же?!
    Эх, так надеялся увидеть возню с железом с процессом восстановления девайса…
    • 0
      Я его передал в обмен на свой старый пальм (это тот самый мой пальм) и ИК-порт к нему. Плюс там операционка 3.2, что не подойдёт для моих программ…
  • 0
    хотелось бы увидеть подобную статью с описанием под windows.
    Так как таких кпк много в наличии. пользуюсь постоянно. И хочется что то сделать под них самому. Смотрю переодически в сторону толстенных руководств. Но они не на русском. В сети что то не найти нормального русскоязычного руководства.
    • 0
      К сожалению я не пользуюсь Windows, да и вам не советую.
    • +1
      для вас лучше всего, наверно, будет поставить виртуальную машину с linux и проделать все операции из статьи. да, будет медленнее компилироваться, но зато проще начать.
      • 0
        Можно купить кодвариор ;).

        Скорость компиляции будет одинаковая, как на виртуалке, так и найтивно — мгновенно.
  • +1
    Если вы беспокоитесь о том, чтобы сохранить всё необходимое для поколений, может сделать в конце статьи вставку с кратким описанием на английском что есть в архиве + ссылку на архив тоже на английском? Ведь вы наверняка что-то скачивали с англоязычных сайтов, и таких интересующихся умельцев много и за рубежом, глядишь и наткнутся на вашу статью
    • +1
      Вы можете сделать анотацию, я приведу. К сожалению ещё читать я как-то могу, а вот писать — увы и ах.
  • +7
    О, кто-то запустил мою версию 2048. Неожиданно. :)
    • 0
      Ух ты! Так это вы автор данной программы? Смотрел ваш гитхаб, вы много писали для пальмов?
      • 0
        Честно говоря, это был первый и единственный опыт программирования для PalmOS (и даже знакомства с ней). В то время мне достался Palm Vx, и я решил написать что-нибудь по такому случаю.
        • 0
          Шикарный опыт, я счиаю. Расскажите, что вы читали чтобы написать такое приложение? Откуда брали API всех функий и как настраивали компилятор? Полагаю, что прошли такой же путь…

          Спасибо большое вам за программу, даже думал написать письмо с благодарностями.
          • +1
            Спасибо! Сначала читал туториалы, как у вас №4, потом при программировании/отладке читал Palm OS Companion из SDK.
            Да, кажется мой путь был очень похож, потратил некоторое время на поиск документации и сбор архивов программ. Компилятор и SDK устанавливал наверно немного проще — т.к. использую gentoo, нашёл ебилды в интернете. ROM скачал с самого устройства при помощи старого компьютера с COM портом и opensuse.
            При этом у пальма была некоторая проблема из-за старости, как оказалось, не редкая: при установке программ сбрасывалась калибровка тачскрина, без которой не удавалось вручную запустить повторную калибровку (решилось с помощью ZDigitize.zip).
            Саму программу 2048 написать удалось довольно просто — она очень похожа на стандартную игру Puzzle (пятнашки), то же поле 4x4, двигающиеся плитки с цифрами…
            Порт 2048 для С нашелся на гитхабе, исходники Puzzle оказались в комплекте с SDK… Поэтому большинство работы было уже доступно, мне пришлось лишь модифицировать управление, немного gui и сохранение.
            • 0
              Большое спасибо за разъяснение. До пятнашек у меня пока ещё руки не дошли ещё :)))
            • 0
              Вы бы написали пост по теме, я готов оказать посильную поддержку. Ведь тема прекрасная :)
              • 0
                Ой, честно говоря, для меня написание текстов — тяжкий труд, я бы предпочел просто покодить в своё удовольствие…
  • +2
    Последнее фото великолепно )
    • 0
      У меня в ЖЖ такого много :)
  • +1
    Где-то в коробках должен лежать вполне рабочий Palm LifeDrive. Нужен?
    • 0
      Я в Москве обитаю…
  • –3
    Почему не советуете пользоваться Windows? уж что то но нет проблем с русским языком. Все просто понятно. Тут на днях попытался натянуть Solaris на старыый Sun. Шоковое состояние мягко сказано. Я не знал что русский язык это так сложно. Это касается и как перевода морды системы, так и попытки зайти на русский сайт в сети. Так что все эти юниксы горе и печаль.

    Тут в одном комментарии писалось про LifeDrive
    замечательная машинка… пользуюсь каждый день. Увеличил ей диск. и немного подвыкинул хлама из прошивки. И добавил своего. Но до идеала еще далеко. Об этой процедуре частично написал. Но ресурс не имеет отношения к данному сайту так что ссылок не будет.
    • 0
      Почему не советуете пользоваться Windows?


      linux — ОС разработчиков для разработчиков. Открытая и бесплатная. Если вам надо написать ПО и вы не знаете как работает API, то вы всегда можете посмотреть исходный код. В windows вы ограничены только документацией (которая не полная). О плюсах *nix систем говорить можно долго. Сегодня я не вижу смысла использовать Windows (за редким исключением).

      В линуксах давно нет проблем с русским языком. Лет 15 как.
    • 0
      1. Теперь попробуйте сделать теле те же операции с windows то же времени, желательно и железо тоже того времени. Испытайте шок ещё раз :)
      2. Solaris, все же не desktop OS, максимум Workstation.
      3. Поставьте современный Linux (да хоть Solaris) хотя бы в ВМ и почувствуйте, что все работает из коробки. Да в некоторых дистрибутивах придется поплясать, но, у них, и назначение другое.
        В современных Unix проблем с русским нет, или почти нет. Последний Solaris вполне можно использовать как desktop.
  • +1

    Огромное-преогромное спасибо!
    К сожалению, мой Palm Zire сдох несколько лет назад, а то тоже бы присоединился! PalmOS была отличной шустрой системой, по сравнению с ней все современные многозадачные "мобильные" монстры вызывают грусть и недоумение...

    • 0
      На самом деле, на avito пальмы продаются за сущие копейки, так что поиграться можно.
  • 0
    Давайте лучше КПК с linux, не раздавайте. Очень актуальная тема на самом то деле, очень многие сейчас хотят производительную железку с линуксом в кармане, взамен иос или андроид. В частности интересует переустановка нативного линукс на соверемнные девайсы, ядро линукс в андройде очень замечательно работает, нужны более приятные дистрибутивы теперь %)
    • 0
      Мои те кпк были ОоОоОООООоочень старыми. А сейчас не знаю на чём можно поставить линукс и можно ли. Ну и практика показывает, что линукс не юзабелен на кпк. Никакой, увы…
      • +1
        не согласен, nokia n800/n900 был вполне юзабелен.
        • 0
          Здесь согласен. Сюда ещё n710 и n9, но это исключения из правил. Либо пилить свой линукс, либо пользоваться андройдом
      • 0
        Раз уж здесь обсуждается palm, то стоит вспомнить про palm webOS (на linux) — очень удобная система и устройства, я, например, до сих пор пользуюсь palm/hp pre3 и touchpad каждый день.
        • 0
          А что за железки на ней были? Не слышал никогда. И как с запуском приложений пальм?
          • 0
            На webOS были разные устройства, в основном вертикальные слайдеры с qwerty клавиатурой (pre, veer). hp touchpad — 9.7" планшет. Насколько я знаю, в первых устройствах на webOS было доступно приложение Classic, которое позволяло запускать пальм-приложения.
            • 0
              Плохо ищутся, как я понял — мало распространённая была. Но на ней сейчас делают телики.
              • +1
                Да, в России она наверно была не очень распространена, хотя было довольно интересное сообщество webos-forums.ru. Действительно, HP продала LG права на использование webOS в телевизорах, часах, проекторах и т.д., но при этом, что является огромным плюсом для энтузиастов, HP открыла исходники webOS.
  • +1
    Эх шикарные были устройства. Сам в начале 2000-х, в университетские годы, пользовался Palm m105. С ностальгией вспоминаю это устройство. Батарейки мне хватало на месяц! Притом я активно читал с него книги и играл в игры. А еще помню писал на него шпоры (преподы тогда вообще не знали о существовании кпк и думали что это калькулятор, поэтому на экзаменах не обращали на него внимание))) И даже пробовал писать программы на чем-то типа HandHeld Basic. Но дальше хелловорлда не ушел.
    • +1
      Вот-вот, тоже самое. Поэтому решил попробовать сейчас.
    • +1
      Я себе для T|T3 на HandHeld Basic наваял поиск адресов в городе Екатеринбурге, с показом картинки с флешки с этим адресом по центру (картинки как и адреса пограбил с сайта Екатеринбург на блюдечке, это конечно не очень хорошо, но для личных целей мне казалось нормально)
  • +2

    Я просто прослезился с данной статьи и обрадовался, что я не один такой с тягой программирования под заведомо устаревшее.
    В свое время именно ради таких статей заходил на хабр, пока еще не было разделения на хабр и гк.

    • +1
      Нам нужно объединяться.
      • +1

        Устаревшее-не значит плохое, ведь так?

        • 0
          Однозначно!
        • +1
          Да и не такое уж порой устаревшее, если рассматривать в контексте решаемых задач, у меня Psion в качестве карманного терминала ком порта, аж до седьмого года проработал, уступив карманной машинке на x86…
  • +1
    Делал под него софт инвентаризации, до сих пор работает и люди пользуются. Год назад звонили клиенты, т.к. у них сели аккумуляторы, а там пальчиковые и легко заменить.
    Устройство было, вроде — Palm Symbol SPT1500.
    Каково было разочарование, когда мы узнали, что их больше не купить. Т.к. они стоили 15к, а любые другие 40к+.

    Софт под него писал на Codewarrior на С++, разрабатывались две части — непосредственно приложение и «плагин» для софта на ПК, для взаимодействия при синхронизации. Т.к. из-за больших особенностей оборудования — память там была банками по 64к, для доступа надо было переключать. Вместо файлов были как бы именованные области, для доступа постоянно надо было обращаться к ним и переключать блоки. Они то и выгружались/загружали с ПК.
    Осложнялось тем, что расположение байтов там было Big-endian, а на ПК, очевидно, Little-endian. Чтоб не было расхождения и двойного кодирования классы работы с данными были написаны один раз, но при работе на ПК через макрос при записи/чтении слов менялся порядок, чтоб на Палме не пришлось. Для инвентаризации было разработана небольшая библиотека чтения/записи таблиц, индексов и т.п.
    Вся программа (исключая ресурсы описания форм), вроде, умещалась в 64к. У Палма были какие-то проблемы с длинными переходами, поэтому иногда при компиляции приходилось менять функции местами чтоб между ними не было дальних переходов (127 байт?), ругался компилятор.
    • 0
      Вот это да! Как бы я хотел поиграться с таким вот КПК! Мой респект и уважуха! Синхронизация была через СОМ-порт?
      • +2
        Да. Там софт шел к кредлу. При нажатии на ПК на кнопочку — синхронизация. (а может и на самом кредле) В итоге все выгружалось в файлы и щагружалось в 1С, тогда еще 7.7.
      • +1
        Чуток нашел у себя. Есть кое-какая документация. Часть кода, но, возможно, еще где-то есть. Вот изображения из документации:

        Надо не забывать, что там еще кнопки штрикодирования на КПК были, по ним все заполнялось.
        • +1
          Вот это крутяк, и надо думать это было кост эффективно…
          • +1
            Сначала нашли софт проверили, работает, закупили оборудование, а на последующих тестах оказалось, что там линейный поиск (а нужно было для большого количества номенклатуры) и при сканировании более 500 объектов задержки между сканированием достигают 5 минут, а номенклатуры более 3 тыс.
            Кроме того, в 1С 7.7. того времени у разного товара мог быть одинаковый штрихкод, но разная цена, и тот софт не поддерживал.
            Написали свой. Моментальное сканирование при любом количестве. Моментальный поиск. Быстрая синхронизация, поддержка инвентаризации объектов с разной ценой и одним штрихкодом. (спрашивало цену). В зависимости от сообщений (нет такой номенклатуры, лишняя, выбрать цену) выдавался различный звуковой сигнал, что когда ты на автомате сканируешь следующую тысячу объектов отлично помогает.
            • 0
              Меня очень интересует API работы с сами сканером. Ведь это железо…
              • +1
                Как-то так:
                многа букоф
                Инициализируем библиотеку сканера и получаем сообщения от системы:
                	if (ScanIsPalmSymbolUnit())
                	{
                		Err error = ScanOpenDecoder();	/* open the scan manager library	 */
                		if (!error)
                		{
                			bOpenDecoderOK = true;		/* set global variable that all is well */
                			ScanCmdScanEnable();		/* Enable scanning */
                			ScanSetTriggeringModes( HOST ); //allow softwaretriggered scans (from our Scan button)
                			ScanSetBarcodeEnabled( barEAN13, true );
                			//ScanSetBarcodeEnabled( barEAN8, true );
                			//ScanSetBarcodeEnabled( barBOOKLAND_EAN, true);
                			//ScanSetBeepAfterGoodDecode(false);
                			ScanCmdSendParams(No_Beep);			
                		}
                	}
                
                    /* Read the saved preferences / saved-state information. */
                    prefsSize = sizeof(appPreferenceType);
                    if (PrefGetAppPreferences(
                        appFileCreator, appPrefID, &g_prefs, &prefsSize, true) != 
                        noPreferenceFound)
                    {
                        /* FIXME: setup g_prefs with default values */
                    }
                
                    /* Setup main form event handler callback thunk (needed for "expanded" mode) */
                    _CW_GenerateEventThunk(CWindow::eventHandler, &MainFormHandleEventThunk);
                


                Обрабатываем событие:
                Boolean CWindow::eventHandler(EventType* eventP)
                {
                ......................
                    switch (eventP->eType) 
                	{
                	case scanDecodeEvent:
                		return window->decode(eventP);
                

                Обрабатываем событие сканера:

                bool CWindow::decode(EventType* event)
                {
                	bool		ret = false;
                	MESSAGE 	decodeDataMsg;
                	Int16		status;
                	MemHandle	hExtendedData;
                	UInt8		*pExtendedData;
                	Int16		extendedDataType;
                	UInt16		extendedDataFlag = ((ScanEventPtr)event)->scanData.scanGen.data1;
                	Int16		extendedDataLength = (Int16)(((ScanEventPtr)event)->scanData.scanGen.data2);
                	UInt16		extend=extendedDataFlag&EXTENDED_DATA_FLAG;
                
                	if (extend)	{
                		hExtendedData = MemHandleNew( extendedDataLength );
                		pExtendedData = (UInt8 *)MemHandleLock( hExtendedData );
                		status = ScanGetExtendedDecodedData(extendedDataLength, &extendedDataType, pExtendedData);
                	}
                	else	{
                		status = ScanGetDecodedData( &decodeDataMsg );
                		extendedDataType = decodeDataMsg.type;
                		extendedDataLength = decodeDataMsg.length;
                		hExtendedData = MemHandleNew(extendedDataLength+1);
                		pExtendedData = (UInt8 *)MemHandleLock( hExtendedData );
                		pExtendedData[extendedDataLength] = '\0';
                		MemMove( &pExtendedData[0], &decodeDataMsg.data[0], extendedDataLength+1 );		
                	}
                	
                	if( status == STATUS_OK)
                		if(extendedDataType != 0) // if we successfully got the decode data from the API...
                			ret = onScanDecode(event, (char*)pExtendedData);
                		else
                			ret = onScanFail(event);
                
                	MemHandleUnlock( hExtendedData );
                	MemHandleFree( hExtendedData );
                
                	return ret;
                }
                


                • 0
                  Супер, как я понимаю библитека зашита в железке. Надо иметь документацию на работу с ней
  • +1
    Спасибо за пост, ностальгичненько :)
    Я писал пару игрушек типа арконоида и flappy bird (без какой-либо графики, только геометрическими фигурами) и бесполезных приложений типа наэкранного пианино-пищалки прямо на самом пальме (m130) в среде SmallBasic, нацарапывая потихоньку код через графити в автобусе по дороге в школу и из. Это было ужасно примитивно, но на фоне «тупых» телефонов (даже J2ME еще не везде адекватно поддерживался) казалось чудом.
  • 0
    А еще можно было ковырять проги дизассемблером и снимать защиту…
    • 0
      Научил бы кто, а то жлобский софт…
      • +1
        http://pdasecurity.chat.ru/main.html из библиографии
  • 0

    Прослезился. Клио. Пилот. 505-ый. Мы так мечтали об офисе в кармане левайсов. Джорнада вообще мечта.Под ДОС да?

    • 0
      ДОС туда никогда не встанет, это ARM. Там везде православный линукс
  • 0

    На Джорнада?

    • 0
      Было бы хорошо отвечать на комментарий…

      Тем не менее, там везде ARM и везде Linux.
      • –1

        ВинЦэ ведь.

        • 0
          Вы там что-то жёсткое курите.

          На этой картинке

          image

          на всех кпк стоит линукс. Я его сам ставил.
          • +1

            Не, не курю. Выпиваю.). 720 в руках не держал. Видел в Мир ПК рекламу джорнады с екселкой под винсе. Это в 2003 чтоли. Вот Шарп помню точно под линуксом был. В то же формфакторе.

          • 0

            Респект за энтузиазм. Но по факту Microsoft Windows for Handheld PC 2000 version 3.0,

            • 0
              Он там и стоит (в Nec и Jornada 720), но плюс я накатил linux/
  • +1
    Ностальгия! Первые 6 лет своей официальной программистской карьеры — это был как раз PalmOS, правда, не 4-й, как описано здесь, а 5-й. Из смешных моментов припоминаю фурор, который произвела моя прога в американской прессе — она восстанавливала стертые данные с б/у девайсов, в результате энтузиасты «с мусорки» подняли переписку тамошнего министра…
  • 0
    У меня до сих пор лежит в ящичке крутейший в свои времена Sony Clie с цветным «HD» 320х320 пикселей экраном. Фанател по этой штуке очень сильно, даже умудрялся через ик-порт и нокиа 6200 выходить в инет и запускать аську. Помню, порывался написать свою версию аськи, но после неудачных попыток разобраться в протоколе и апи палма подостыл к этому делу. И я точно помню, что ставил какую-то IDE под винду, и она точно работала без проблем.
  • 0
    Сейчас пользуюсь Tungsten E2 как читалкой и напоминалкой.

    До сих пор ничего удобнее в плане органайзера не придумали.

    И главное, 14-летняя железка не дохнет и держит батарею по 2 недели (непрерывного чтения — 1 день), только металл стирается и контакты зарядки спиртом приходится протирать.

Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.