Dlinyj (dlinyj) wrote,
Dlinyj
dlinyj

Categories:

Как написать hello world для PalmOS в 2017 году.

Сейчас 13 мая 2017 года, за окном лежит снег (вот такое херовое лето), я в трезвом уме и доброй памяти рассказываю вам как в эту славную субботу можно написать своё приложение для PalmOS (конкретно для 3.5 и старше). По моему эта ОС даже старше WindowsXP.

Вчера вечером решил полистать книжечку Palm OS® Programming Bible. Интересно же увидеть, как писали для КПК. И спустя два часа поймал себя на том, что я опаздываю на встречу и занимаюсь любовью с sdk. Разозлился, всё стёр нахер, думаю всё! Нужно делать что-то полезное. Но свербит, блин. Вот, что делать, если свербит?! Короче, покажу результат, а потом как я это сделал.



Плюс PalmOS, что устройств просто ТОННА! Оказалось, что даже есть телефоны с PalmOS! Отсюда куча документации и примеров, даже есть на русском. Минус, что вся документация размазана тонким слоем по куче сайтов, текстовых документов и т.п. Надо всё собирать. Специально для вас, всё собрано в одну кучу в РАБОТАЮЩИЙ МАНУАЛ . Итак, sdk под linux. Установку эмулятора смотреть в предыдущем посте. Итак, вы готовы? Тогда поехали.

Устанавливать будем под debian семейство. В моём случае это linux mint. Лично я честно пытался собрать из исходных кодов всё...



Поэтому мы идём другим путём. Несколько странным, но работающим.

1. Нужно установить пакет prc-tools - это коллекция инструментов для сборки для PalmOS. Джедаи могут его собрать, но я пошёл проверенным путём. Ссылку на это дело я давал.

Качаем отсюда prc-tools-2.3-1.i386.rpm . Обратите внимание, что это rpm-пакет. Надо его сделать deb-пакетом и установить. Выполняем две команды:

 sudo alien prc-tools-2.3-1.i386.rpm
- превращает пакет в дебиановский
 sudo dpkg -i prc-tools_2.3-2_i386.deb
- собственно установка пакета

После установки тулзов, я уже было побежал компилировать хелло ворд, но не тут-то было. После двух часов чтения разной документации, оказалось, что нужно ещё установить sdk! Задача оказалась не тривиальной.

2. Установка sdk. Поскольку компания производящая эту ОС почила с миром, то все можно найти только в зеркалах. Более полный sdk для PalmOS 3.5 с документацией и примерами я нашёл вот тут . Нас пока интересует файл sdk35.tar.gz . Так же есть другой неплохой сайт на русском, где тоже можно скачать данный файл.

Далее по пунктам:
а) Переходим в папке с архивом и выполняем разархивацию:
tar -xzf sdk35.tar.gz


б) Дальше перемещаем содержимое папок в соответствующие места (соответственно заголовочные файлы и библиотеки)
mv Palm\ OS \ 3.5\ Support/ /usr/local/palmdev/sdkpalmos-3.5
cd /usr/local/palmdev/sdkpalmos-3.5
mv Incs include #переименовываем папку в include, там хранятся хедеры
mv GCC\ Libraries lib #аналогично с либами


в) Нетривиальный пункт, ответ на который я долго искал. Системе надо сообщить что мы установили SDK и куда это сделали. Делается командой:

palmdev-prep /usr/local/palmdev


Фууух... Теперь можно и хеловорднуть. Пример взял отсюда, но поскольку всё имеет место погибать, привожу код сюда

#include <palmos.h>

// ---------------------------------------------------------------------
// PilotMain is called by the startup code and implements a simple event
// handling loop.
// ---------------------------------------------------------------------
UInt32 PilotMain( UInt16 cmd, void *cmdPBP, UInt16 launchFlags )
{
    EventType event;
    if (cmd == sysAppLaunchCmdNormalLaunch) {
        //  Display a string.
        WinDrawChars( "Hello, world!", 13, 55, 60 );
        //  Main event loop:
        do {
            //  Doze until an event arrives.
            EvtGetEvent( &event, evtWaitForever );

            //  System gets first chance to handle the event.
            SysHandleEvent( &event );

            //  Normally, we would do other event processing here.

        // Return from PilotMain when an appStopEvent is received.
        } while (event.eType != appStopEvent);
    }
    return;
}


Компиляция идёт последовательностью команд:

m68k-palmos-gcc hello.c -o hello
m68k-palmos-obj-res hello
build-prc hello.prc "Hello, World" WRLD *.hello.grc


Либо, что более верно, с помощью мейкфайла (взят уже из другого примера):

 hello.prc: code0001.hello.grc
            build-prc hello.prc "Hello, World" WRLD *hello.grc


        code0001.hello.grc: hello.c
            m68k-palmos-coff-gcc -O2 hello.c -o hello
            m68k-palmos-coff-obj-res hello

        clean:
            @rm -f *.grc *.o *.prc hello


В результате мы получаем файл hello.prc, который может быть установлен в наш чудный аппарат. В моём случае программа выглядит вот так:




Вот так, не хитрым способом мы можем нарисовать сову. Да, я упорот.
Tags: #include, #аналогично, #переименовываем, palm
Subscribe

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 6 comments