Я, в трезвом уме и доброй памяти, рассказываю как, в 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. Различные исходники описанием на русском
Поделиться с друзьями
-->

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


  1. grvelvet
    21.05.2017 18:34
    +5

    Реквестирую «Программирование для Symbian в 2017»:)


    1. gresolio
      21.05.2017 23:25

      Поддерживаю, тоже есть желание попробовать такое спустя много лет :) Много было разных Symbian смартов, но больше всего запомнился — 6630, превосходный девайс с одной из самых удобных клавиатур своего времени:

      6630 - Symbian 8.0a FP2
      image


    1. grishkaa
      22.05.2017 02:11
      +1

      Пробовал программировать для Symbian в 2010. Там своя среда на основе Eclipse (carbide c++, кажется) и абсолютно ужасный процесс отладки либо на отваливающемся устройстве, либо на виснущем эмуляторе. А, и ещё hello world состоит из 5 классов. А, и ещё при любом изменении весь проект пересобирается полностью, это несколько минут для того же hello world. А, и ещё своя реализация исключений. И упоротая схема наименования классов и методов. А, и ещё там есть дофига видов строк… Зато нативно поддерживается векторная графика в ресурсах — что-то, что андроид научился только начиная с 5.0.


      1. zanac
        23.05.2017 11:20

        Есть отладка по wi-fi для symbian 9.3+


    1. lzb_j77
      22.05.2017 07:20
      +2

      До сих пор юзаю Nokia 6680 и 6681 — ничего более удобного не видел до сих пор.
      Так же использую E72 — полторы-две недели живёт от одного заряда :)

      Есть всё нужное мне ПО, удобны в использовании.


    1. scg
      22.05.2017 08:18
      +2

      А чего Symbian? Давайте тогда уж EPOC32.


    1. zanac
      23.05.2017 11:08

      Недавно собрал GCC 7.1.0 с binutils&gdb :-)


    1. joshhhab
      24.05.2017 20:31

      Для Symbian UIQ3 еще более высший пилотаж бы был!


  1. boootloader
    21.05.2017 19:35
    +5

    Это великолепно. Автор, пусть в твоей жизни всегда всё-всё-всё будет хорошо. Правда.

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


    1. dlinyj
      21.05.2017 23:31
      +1

      Это великолепно. Автор, пусть в твоей жизни всегда всё-всё-всё будет хорошо. Правда.


      Спасибо большое за тёплые слова. Собственно для этого и писалась статья, чтобы вдохновить на подвиги!


  1. jaguard
    21.05.2017 19:42
    +1

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


    1. dlinyj
      21.05.2017 23:30

      приседания в гамаке


      Что вы имеете в виду?


      1. nickolas059
        23.05.2017 11:18

        Это очевидно метафора, что сделать это сложно и неудобно.


    1. DrPass
      22.05.2017 00:38
      +1

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


      1. dronab
        22.05.2017 07:11
        +2

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


        1. DrPass
          22.05.2017 13:36
          +1

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


          1. edo1h
            22.05.2017 14:37
            +1

            Хотите хранить что-то больше 64К или просто данные переменной длины, или работать с текстом — ухищряйтесь, боритесь с системой, мучайтесь :)

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

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

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

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


            1. DrPass
              22.05.2017 16:09
              +2

              а в чём проблема хранить данные переменной длины? или текст?

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

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


              1. edo1h
                22.05.2017 16:37
                +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? я уж лучше приделаю хранение данных в копеечной микрушке, оно и надёжнее, и удобнее.


                1. dlinyj
                  22.05.2017 16:43

                  Коллеги, давайте не будем разводить холивар :)


          1. dronab
            22.05.2017 15:10
            +1

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


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


    1. edo1h
      22.05.2017 07:36
      +1

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

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

      а вот с palmos5 у них не вышел каменный цветок.
      эмуляция m68k на arm, эмуляция старого API доступа к DB поверх NVFS (ох, сколько времени у меня ушло на вылавливание и обход глюков), попытка к старому API приделать web, мультимедию и т.п.
      похоже, это был временный/переходной вариант, но пока разрабатывали идеологически верный (наверное) palmos6 поезд ушёл…


      1. jaguard
        22.05.2017 11:20
        +1

        «Полноценный эмулятор» был у всех — но поведение на реальном устройстве всегда отличалось. Помню веселые времена, когда printf("%i"); (или что-то подобное) спокойно работал в эмуляторе PocketPC, но падал безо всяких сообщений на реальном устройстве.

        А мегабайты — с ними просто. Я хотел игрушки делать, с графикой и анимацией. Но удовольствие работать с блоками памяти по 64кб и переписывать части кода в ассемблер m68k, чтобы добиться приличной скорости — не зашло. Я не осуждаю тех, для кого удовольствие повозиться с ограничениями платформы, есть множество любителей программирования под NES или Atari 2600, просто сообщаю что на фоне основного конкурента это была ужасная для программиста платформа — то, что делалось на PocketPC щелчком пальцев, на палме приходилось героически преодолевать.


        1. dlinyj
          22.05.2017 11:29

          Как было бы замечательно почитать такие ностальгические брюзжания с описанием почему не понравилось :)


        1. edo1h
          22.05.2017 11:50
          +1

          «Полноценный эмулятор» был у всех — но поведение на реальном устройстве всегда отличалось. Помню веселые времена, когда printf("%i"); (или что-то подобное) спокойно работал в эмуляторе PocketPC, но падал безо всяких сообщений на реальном устройстве.


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

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

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


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


          1. jaguard
            22.05.2017 13:57
            +1

            >а у palmos честный эмулятор, который полностью эмулировал конкретное устройство, вплоть до того, >что (как я уже писал) эмулятор использовал «родную» прошивку с устройства.

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

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

            Нет уж, позвольте. Я выбрал железо формата Карманный Персональный Компьютер (КПК). Прямой конкурент на платформе Pocket PC 2002 предоставляет мне многозадачную 32-битную ОС, полноценную файловую систему, удобные средства разработки (даже Visual Assist работал). А компания Palm решила сэкономить, взяла доисторический микроконтроллер вместо процессора, и я из-за этого решения страдаю. Это не моя проблема, это проблема Palm, inc.


            1. SADKO
              22.05.2017 14:42
              +3

              А мне казалось это у них фишка такая, дабы автономность (в смысле времени работы от батарей) была больше чем у покета…
              … правда были ещё покеты с MIPS


      1. Error1024
        23.05.2017 01:54
        +1

        API описано? очень качественно, плюс потом исходники заметной части OS появились, заглядывал в них — всё просто.

        А можно поподробнее про сорцы?


        1. edo1h
          23.05.2017 03:05
          +1

          вот нашёл:
          Palm OS 4.0 Limited Sources
          вроде бы были выложены куски и более старых версий, но не нашлось сходу, увы.


  1. LynXzp
    21.05.2017 20:19
    +1

    На указанном устройстве 4 больших кнопки… Так и просится ну_погоди.jpg
    Хотя наверное они используются для управления и нельзя подобное написать.


    1. k12th
      21.05.2017 20:53
      +1

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


    1. dlinyj
      21.05.2017 23:27

      Можно, можно! И наверное даже есть. Но я что-то пока не понял, как у него с динамической индикацией.


    1. jaguard
      22.05.2017 01:13
      +2

      В динамические игры на палме печально было играть — экран был медленным, как тетрисы 1001-в-1, быстрые движения смазывались и сильно падала контрастность. Клоны «Ну, погоди» — да были конечно, как и множество других, в том числе коммерческих, игр.
      А во времена заката платформы уже были цветные экраны и игры уровня варкрафт-2.


      1. Fuzzyjammer
        22.05.2017 17:42
        +2

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


        1. DrPass
          22.05.2017 17:56
          +1

          Второй игрой был SimCity, который динамичным не назовешь, но меня поразил сам факт адаптации такой игры под пальм.

          Минимальная конфигурация для работы SimCity, насколько я помню, включала в себя 48К ОЗУ и процессор Z80 (8 бит, 3МГц). Так что на пальме ему было весьма просторно и комфортно :)


  1. Acuna
    21.05.2017 20:33
    +2

    За статью спасибо, прочитал с огромным удовольствием) Вопрос несколько не по теме. Если не секрет, чем Вы занимаетесь, что находите время на такого рода занятия? Можно даже не конкретно о себе рассказать если не хочется, а просто анаморфно чем другие такие первооткрыватели обычно по жизни занимаются. Просто у самого имеются идеи в голове такого же рода, но времени на них не хватает катастрофически. Спасибо)


    1. dlinyj
      21.05.2017 23:32

      На самом деле я раздолбай :). Сейчас провожу различные курсы по линуксу: программирование, администрирование. Посмотрите у меня в ЖЖ. Мне нравится свобода и время. Это самое ценное что у нас есть.


      1. Acuna
        23.05.2017 18:02
        +1

        Ахах, ну да, это было даже несколько предсказуемо) А вообще идеальный вариант, и время свободное имеется, и заработок. Самому впору курсы прям начать вести)))


  1. NickyX3
    21.05.2017 21:01
    +1

    Для Palm еще был HandHeld Basic. Вполне такой себе Visual Basic под Windows чтоб программировать под Palm. Один из самых кстати лучших по размеру кода


  1. Flash_CSM
    21.05.2017 21:32
    +1

    И восхотел я реанимировать данный пальм

    И где же?!
    Эх, так надеялся увидеть возню с железом с процессом восстановления девайса…


    1. dlinyj
      21.05.2017 23:28

      Я его передал в обмен на свой старый пальм (это тот самый мой пальм) и ИК-порт к нему. Плюс там операционка 3.2, что не подойдёт для моих программ…


  1. K1801vm2
    21.05.2017 23:13

    хотелось бы увидеть подобную статью с описанием под windows.
    Так как таких кпк много в наличии. пользуюсь постоянно. И хочется что то сделать под них самому. Смотрю переодически в сторону толстенных руководств. Но они не на русском. В сети что то не найти нормального русскоязычного руководства.


    1. dlinyj
      21.05.2017 23:28

      К сожалению я не пользуюсь Windows, да и вам не советую.


    1. Rast1234
      22.05.2017 02:18
      +1

      для вас лучше всего, наверно, будет поставить виртуальную машину с linux и проделать все операции из статьи. да, будет медленнее компилироваться, но зато проще начать.


      1. dlinyj
        22.05.2017 08:02

        Можно купить кодвариор ;).

        Скорость компиляции будет одинаковая, как на виртуалке, так и найтивно — мгновенно.


  1. DukeKan
    21.05.2017 23:28
    +1

    Если вы беспокоитесь о том, чтобы сохранить всё необходимое для поколений, может сделать в конце статьи вставку с кратким описанием на английском что есть в архиве + ссылку на архив тоже на английском? Ведь вы наверняка что-то скачивали с англоязычных сайтов, и таких интересующихся умельцев много и за рубежом, глядишь и наткнутся на вашу статью


    1. dlinyj
      21.05.2017 23:29
      +1

      Вы можете сделать анотацию, я приведу. К сожалению ещё читать я как-то могу, а вот писать — увы и ах.


  1. NIN
    21.05.2017 23:29
    +7

    О, кто-то запустил мою версию 2048. Неожиданно. :)


    1. dlinyj
      21.05.2017 23:29

      Ух ты! Так это вы автор данной программы? Смотрел ваш гитхаб, вы много писали для пальмов?


      1. NIN
        22.05.2017 10:54

        Честно говоря, это был первый и единственный опыт программирования для PalmOS (и даже знакомства с ней). В то время мне достался Palm Vx, и я решил написать что-нибудь по такому случаю.


        1. dlinyj
          22.05.2017 11:27

          Шикарный опыт, я счиаю. Расскажите, что вы читали чтобы написать такое приложение? Откуда брали API всех функий и как настраивали компилятор? Полагаю, что прошли такой же путь…

          Спасибо большое вам за программу, даже думал написать письмо с благодарностями.


          1. NIN
            22.05.2017 20:58
            +1

            Спасибо! Сначала читал туториалы, как у вас №4, потом при программировании/отладке читал Palm OS Companion из SDK.
            Да, кажется мой путь был очень похож, потратил некоторое время на поиск документации и сбор архивов программ. Компилятор и SDK устанавливал наверно немного проще — т.к. использую gentoo, нашёл ебилды в интернете. ROM скачал с самого устройства при помощи старого компьютера с COM портом и opensuse.
            При этом у пальма была некоторая проблема из-за старости, как оказалось, не редкая: при установке программ сбрасывалась калибровка тачскрина, без которой не удавалось вручную запустить повторную калибровку (решилось с помощью ZDigitize.zip).
            Саму программу 2048 написать удалось довольно просто — она очень похожа на стандартную игру Puzzle (пятнашки), то же поле 4x4, двигающиеся плитки с цифрами…
            Порт 2048 для С нашелся на гитхабе, исходники Puzzle оказались в комплекте с SDK… Поэтому большинство работы было уже доступно, мне пришлось лишь модифицировать управление, немного gui и сохранение.


            1. dlinyj
              22.05.2017 21:12

              Большое спасибо за разъяснение. До пятнашек у меня пока ещё руки не дошли ещё :)))


            1. dlinyj
              24.05.2017 11:53

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


              1. NIN
                24.05.2017 19:56

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


  1. Chipset89
    21.05.2017 23:36
    +2

    Последнее фото великолепно )


    1. dlinyj
      21.05.2017 23:41

      У меня в ЖЖ такого много :)


  1. GeMir
    22.05.2017 00:21
    +1

    Где-то в коробках должен лежать вполне рабочий Palm LifeDrive. Нужен?


    1. dlinyj
      22.05.2017 00:22

      Я в Москве обитаю…


  1. K1801vm2
    22.05.2017 00:59
    -3

    Почему не советуете пользоваться Windows? уж что то но нет проблем с русским языком. Все просто понятно. Тут на днях попытался натянуть Solaris на старыый Sun. Шоковое состояние мягко сказано. Я не знал что русский язык это так сложно. Это касается и как перевода морды системы, так и попытки зайти на русский сайт в сети. Так что все эти юниксы горе и печаль.

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


    1. dlinyj
      22.05.2017 07:43

      Почему не советуете пользоваться Windows?


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

      В линуксах давно нет проблем с русским языком. Лет 15 как.


    1. Tomatos
      22.05.2017 10:01

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


  1. LorHobbit
    22.05.2017 07:39
    +1

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


    1. dlinyj
      22.05.2017 08:03

      На самом деле, на avito пальмы продаются за сущие копейки, так что поиграться можно.


  1. lola_term
    22.05.2017 10:27

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


    1. dlinyj
      22.05.2017 11:25

      Мои те кпк были ОоОоОООООоочень старыми. А сейчас не знаю на чём можно поставить линукс и можно ли. Ну и практика показывает, что линукс не юзабелен на кпк. Никакой, увы…


      1. edo1h
        22.05.2017 11:52
        +1

        не согласен, nokia n800/n900 был вполне юзабелен.


        1. dlinyj
          22.05.2017 12:37

          Здесь согласен. Сюда ещё n710 и n9, но это исключения из правил. Либо пилить свой линукс, либо пользоваться андройдом


      1. NIN
        22.05.2017 22:02

        Раз уж здесь обсуждается palm, то стоит вспомнить про palm webOS (на linux) — очень удобная система и устройства, я, например, до сих пор пользуюсь palm/hp pre3 и touchpad каждый день.


        1. dlinyj
          22.05.2017 22:03

          А что за железки на ней были? Не слышал никогда. И как с запуском приложений пальм?


          1. NIN
            22.05.2017 22:09

            На webOS были разные устройства, в основном вертикальные слайдеры с qwerty клавиатурой (pre, veer). hp touchpad — 9.7" планшет. Насколько я знаю, в первых устройствах на webOS было доступно приложение Classic, которое позволяло запускать пальм-приложения.


            1. dlinyj
              22.05.2017 22:12

              Плохо ищутся, как я понял — мало распространённая была. Но на ней сейчас делают телики.


              1. NIN
                22.05.2017 22:24
                +1

                Да, в России она наверно была не очень распространена, хотя было довольно интересное сообщество webos-forums.ru. Действительно, HP продала LG права на использование webOS в телевизорах, часах, проекторах и т.д., но при этом, что является огромным плюсом для энтузиастов, HP открыла исходники webOS.


  1. Dromok
    22.05.2017 11:17
    +1

    Эх шикарные были устройства. Сам в начале 2000-х, в университетские годы, пользовался Palm m105. С ностальгией вспоминаю это устройство. Батарейки мне хватало на месяц! Притом я активно читал с него книги и играл в игры. А еще помню писал на него шпоры (преподы тогда вообще не знали о существовании кпк и думали что это калькулятор, поэтому на экзаменах не обращали на него внимание))) И даже пробовал писать программы на чем-то типа HandHeld Basic. Но дальше хелловорлда не ушел.


    1. dlinyj
      22.05.2017 11:26
      +1

      Вот-вот, тоже самое. Поэтому решил попробовать сейчас.


    1. NickyX3
      23.05.2017 15:04
      +1

      Я себе для T|T3 на HandHeld Basic наваял поиск адресов в городе Екатеринбурге, с показом картинки с флешки с этим адресом по центру (картинки как и адреса пограбил с сайта Екатеринбург на блюдечке, это конечно не очень хорошо, но для личных целей мне казалось нормально)


  1. Sonzanie
    22.05.2017 13:49
    +2

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


    1. dlinyj
      22.05.2017 13:50
      +1

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


      1. Sonzanie
        22.05.2017 15:34
        +1

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


        1. dlinyj
          22.05.2017 15:43

          Однозначно!


        1. SADKO
          22.05.2017 16:03
          +1

          Да и не такое уж порой устаревшее, если рассматривать в контексте решаемых задач, у меня Psion в качестве карманного терминала ком порта, аж до седьмого года проработал, уступив карманной машинке на x86…


  1. Plague
    22.05.2017 13:57
    +1

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

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


    1. dlinyj
      22.05.2017 14:01

      Вот это да! Как бы я хотел поиграться с таким вот КПК! Мой респект и уважуха! Синхронизация была через СОМ-порт?


      1. Plague
        22.05.2017 14:03
        +2

        Да. Там софт шел к кредлу. При нажатии на ПК на кнопочку — синхронизация. (а может и на самом кредле) В итоге все выгружалось в файлы и щагружалось в 1С, тогда еще 7.7.


      1. Plague
        22.05.2017 15:09
        +1

        Чуток нашел у себя. Есть кое-какая документация. Часть кода, но, возможно, еще где-то есть. Вот изображения из документации:

        Надо не забывать, что там еще кнопки штрикодирования на КПК были, по ним все заполнялось.


        1. SADKO
          22.05.2017 16:19
          +1

          Вот это крутяк, и надо думать это было кост эффективно…


          1. Plague
            22.05.2017 16:58
            +1

            Сначала нашли софт проверили, работает, закупили оборудование, а на последующих тестах оказалось, что там линейный поиск (а нужно было для большого количества номенклатуры) и при сканировании более 500 объектов задержки между сканированием достигают 5 минут, а номенклатуры более 3 тыс.
            Кроме того, в 1С 7.7. того времени у разного товара мог быть одинаковый штрихкод, но разная цена, и тот софт не поддерживал.
            Написали свой. Моментальное сканирование при любом количестве. Моментальный поиск. Быстрая синхронизация, поддержка инвентаризации объектов с разной ценой и одним штрихкодом. (спрашивало цену). В зависимости от сообщений (нет такой номенклатуры, лишняя, выбрать цену) выдавался различный звуковой сигнал, что когда ты на автомате сканируешь следующую тысячу объектов отлично помогает.


            1. dlinyj
              22.05.2017 18:56

              Меня очень интересует API работы с сами сканером. Ведь это железо…


              1. Plague
                22.05.2017 20:00
                +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;
                }
                



                1. dlinyj
                  23.05.2017 11:07

                  Супер, как я понимаю библитека зашита в железке. Надо иметь документацию на работу с ней


  1. Fuzzyjammer
    22.05.2017 14:51
    +1

    Спасибо за пост, ностальгичненько :)
    Я писал пару игрушек типа арконоида и flappy bird (без какой-либо графики, только геометрическими фигурами) и бесполезных приложений типа наэкранного пианино-пищалки прямо на самом пальме (m130) в среде SmallBasic, нацарапывая потихоньку код через графити в автобусе по дороге в школу и из. Это было ужасно примитивно, но на фоне «тупых» телефонов (даже J2ME еще не везде адекватно поддерживался) казалось чудом.


  1. BubaVV
    22.05.2017 18:48

    А еще можно было ковырять проги дизассемблером и снимать защиту…


    1. dlinyj
      22.05.2017 18:53

      Научил бы кто, а то жлобский софт…


      1. BubaVV
        22.05.2017 18:57
        +1

        http://pdasecurity.chat.ru/main.html из библиографии


  1. ubiquamus
    22.05.2017 18:53

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


    1. dlinyj
      22.05.2017 18:53

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


  1. ubiquamus
    22.05.2017 19:03

    На Джорнада?


    1. dlinyj
      22.05.2017 19:04

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

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


      1. ubiquamus
        22.05.2017 19:55
        -1

        ВинЦэ ведь.


        1. dlinyj
          22.05.2017 19:57

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

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

          image

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


          1. ubiquamus
            22.05.2017 20:18
            +1

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


          1. ubiquamus
            22.05.2017 20:22

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


            1. dlinyj
              22.05.2017 21:11

              Он там и стоит (в Nec и Jornada 720), но плюс я накатил linux/


  1. br0x
    24.05.2017 13:22
    +1

    Ностальгия! Первые 6 лет своей официальной программистской карьеры — это был как раз PalmOS, правда, не 4-й, как описано здесь, а 5-й. Из смешных моментов припоминаю фурор, который произвела моя прога в американской прессе — она восстанавливала стертые данные с б/у девайсов, в результате энтузиасты «с мусорки» подняли переписку тамошнего министра…


  1. arpeggio
    24.05.2017 13:57

    У меня до сих пор лежит в ящичке крутейший в свои времена Sony Clie с цветным «HD» 320х320 пикселей экраном. Фанател по этой штуке очень сильно, даже умудрялся через ик-порт и нокиа 6200 выходить в инет и запускать аську. Помню, порывался написать свою версию аськи, но после неудачных попыток разобраться в протоколе и апи палма подостыл к этому делу. И я точно помню, что ставил какую-то IDE под винду, и она точно работала без проблем.


  1. Siemargl
    24.05.2017 21:03

    Сейчас пользуюсь Tungsten E2 как читалкой и напоминалкой.

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

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