Вдохновлённый статьёй пятилетней давности товарища @dlinyj про программирование для PalmOS, решил продолжить тему разработки под давно умершие платформы.
Так уж получилось, что я (как и многие из присутствующих здесь) увлекаюсь различным древним железом, в том числе, конечно, и КПК. И сегодня речь пойдёт об одной навсегда ушедшей в историю линейке КПК от компании Psion.
Вообще
Несмотря на то, что куда большую известность приобрели устройства вроде Psion 5 на базе ОС EPOC32 с процессором ARM, сегодня речь пойдёт о куда более старой платформе, получившей распространение в начале девяностых, - SIBO (Sixteen bit organizer), она же EPOC16. Типичными КПК под управлением этой ОС являются Psion Series 3, Psion Siena, а также ТСД Psion Workabout.
Все эти устройства были оснащены процессором NEC V30 (точнее, системой на чипе на базе данного процессора), монохромным дисплеем, несколькими мегабайтами энергозависимой памяти. Для подключения к компьютеру использовался обычный RS-232 совместно с проприетарным кабелем 3Link. На ПК устанавливалось ПО PsiWin (Windows 9x) или RCOM (DOS).
Обзор оборудования
Увы, Psion Series 3 у меня нет, равно как и Psion Siena. В связи с их достаточно высокой ценой и отсутствием оригинальных аксессуаров решил пока не покупать ни один из них.
Поэтому для того, чтобы поиграться с EPOC16 "в железе", мною был найден ТСД Psion Workabout MX. В сочетании с моей любовью к промышленным и прочим специализированным КПК - вообще идеальный вариант.
Состояние, конечно, не лучшее: нет ни подставки, ни модулей памяти (Psion SSD), корпус зачухан. Впрочем, учитывая, при каких условиях он мне достался, ничего так экземпляр.
Спереди у нас находятся все основные элементы управления. Зелёная клавиша в центре активирует сканер штрих-кодов. Направление сканирования, кстати, можно поменять, поворачивая сканирующий блок на удобный вам угол.
Сзади ничего особо примечательного - название модели, отверстия под крепёжные винты, некогда державшие ремешок на руку, кнопка открытия лотка. Красная деталь позволяет заблокировать лоток для открытия.
А вот и сам лоток. В нём находятся отсек для основных батарей, отсек для резервной батареи, а также два слота под Psion SSD. Увы, из-за разряда резервной батарейки содержимое памяти "протухло". Мне не удалось найти какое-либо ПО для сбора данных под EPOC16, если вдруг оно есть у вас и вы готовы поделиться, буду очень рад.
А вот и порты. Слева обычный COM, справа проприетарный разъём для подключения кабеля 3Link.
COM-порт является неоспоримым преимуществом данного устройства - его можно подключить к компьютеру при помощи обычного нуль-модемного кабеля. Его можно как купить, так и сделать самому. Я использовал кабель от кассового аппарата "Феликс-02К", всё работало отлично.
Что мы делаем, когда нам в руки попадает очередная интересная железка? Правильно: мы её разбираем. Вот так вот выглядит материнская плата данного девайса. Отчётливо видны проприетарный чип NEC, микросхемы оперативной и флеш-памяти, немного дискретной логики.
На чём вообще программировали под EPOC16?
С железом разобрались, теперь посмотрим, как обстоят дела со средствами программирования. Производитель предлагает сразу три варианта:
OPL (Organiser Programming Language). Приложения пишутся на неком BASIC-подобном языке, причём разрабатывать их можно прямо на самом устройстве, на Workabout интерпретатор уже установлен. Язык этот достаточно древний, на OPL можно было писать даже под Psion Organiser.
OVAL (Object-based Visual Application Language). Язык на этот раз напоминает VBA, есть даже специальная среда разработки под Windows.
-
C. Ну, это ясно, что такое. Разработка ведётся с использованием SIBO C SDK.
С BASIC и VBA у меня что-то не задалось ещё в школьные годы, поэтому мой выбор ясен как никогда. Для желающих попробовать другие варианты, ссылки я тоже выложу в конце поста.
Где найти SIBO C SDK?
Почему-то даже несколько неудивительно, но найти SDK оказалось не так-то и просто. Все ссылки традиционно дохлые, а единственное, что удаётся найти, так это какие-то мануалы.
Наконец, SDK не без труда, но таки был обнаружен на просторах Web Archive. Так что теперь мы наконец-то сможем начать разработку под EPOC16.
Компоненты
Итак, для того, чтобы начать разрабатывать под EPOC16, нам понадобится примерно следующее:
Непосредственно сам SIBO C SDK. Как и на всё остальное, ссылка на него будет в конце данного поста.
Компилятор Clarion TopSpeed C Compiler.
DOSBox или любое аналогичное ПО. Как нетрудно догадаться, компилятор работает под DOS. Сама Psion PLC давала инструкцию по тому, как запустить его под Windows 2000, но все описанные далее действия выполнялись мною в чистом DOS, установленном на VMWare Workstation. Впрочем, компилятор не является особо требовательным и не сыпет ошибками при запуске на новом процессоре, так что проблем с его установкой быть не должно.
Эмулятор. На нём будем тестировать то, что написали.
RCOM или PsiWin. В случае использования "железного" девайса данное ПО будет необходимо для загрузки программы в память устройства.
Ставим ПО
Вообще, никаких проблем с установкой возникнуть не должно. У меня всё получилось с первого раза без проблем. Но всё равно опишу этот процесс.
Итак, для начала нам надо поставить компилятор. Запускаем Install в папке COMPILER, начинаем установку.
Ничего не меняя, продолжаем.
Тут нужно убедиться, что параметр "Small memory model libraries for DOS" активирован.
Аналогичным образом ставим ПО из папки DOSENV. Всё, компилятор установлен.
Теперь очередь SDK. Вставляем первую дискету с ним и запускаем батник install.bat. Ставим прямо в корень диска C. Ту же самую операцию проводим с двумя другими дисками. Ставим всё, лишним оно точно не будет.
Теперь открываем в текстовом редакторе AUTOEXEC.BAT и дописываем туда строчку:
PATH C:\DOS;C:\TS\SYS;C:\SIBOSDK\SYS;C:\SIBOSDK\INCLUDE;C:\SIBOSDK\LIB
Если у вас там уже что-то указано, просто допишите последние четыре пути через точку с запятой. Теперь перезагружаемся и командой PATH убеждаемся, что всё указано верно.
Теперь очередь конфигурации. Выполняем следующие команды:
CD \TS\SYS
COPY \SIBOSDK\SYS\TSMAIN.TXT
COPY \SIBOSDK\SYS\TSPRJ.TXT
TSCFG
Соглашаемся с перезаписью файлов и запускаем TSCFG. Если всё было сделано правильно, получится примерно следующее:
Всё, с установкой закончили. Можно приступать непосредственно к программированию.
Первая программа
Создаём в корне диска C папку, например, WORK. Название тут особого значения не имеет. Далее копируем в неё файл TS.RED из папки C:\SIBOSDK\SYS. И создаём ещё несколько файлов:
HELLO.C следующего содержания:
#include <stdio.h>
int main (void)
{
printf("Hello, world!");
getchar();
return(0);
}
HELLO.PR следующего содержания:
#system epoc img
#model small jpi
#compile hello
#link hello
Какой-нибудь батник (например, S.BAT) следующего содержания:
TSC /R /M HELLO
Для ленивых - файлы HELLO.C и HELLO.PR лежат в папке \SIBOSDK\DEMO.
Итак, запускаем S.BAT и смотрим, что получится. А получиться должно примерно следующее:
Эмулятор
Разумеется, хочется попробовать запустить нашу программу и посмотреть, что же получилось. Для этого скачиваем эмулятор, в папке с ним запускаем батник INSTALL.BAT. После этого на диске C: будет создана папка с эмулятором. Запускаем RUNME.BAT, далее в эмуляторе жмём клавишу F9, выбираем "Special\Remote Link". Активируем связь с ПК.
Всё, эмулятор готов принимать в себя исполняемые файлы. Попутно можно поиграться со стандартным ПО.
Запуск
Ну что же, теперь настала очередь запуска нашей проги.
Переходим в нашу папку C:\WORK и запускаем MCLINK. Если эта утилита не запускается - проверьте ваш PATH.
После открытия программы надо дождаться появления надписи "Link established". Я особо не мучился, а просто связал DOSBox и VMWare при помощи Virtual Serial Port Driver.
Копируем наш исполняемый файл, для чего набираем:
copy hello.img rem::m:\img\hello.img
Если всё скопировалось успешно, в эмуляторе появится наша прога.
Запускаем её, и, если на предыдущих этапах мы нигде не накосячили, на экране должно будет появиться примерно следующее:
А как там на железе?
Разумеется, после успешно собранной программы хочется опробовать её на реальном устройстве.
Итак, берём наш Workabout, вставляем батарейки, настраиваем Remote Link, в настройках VMWare меняем проброс COM-порта...
И оно таки работает.
Более правильный вариант
Несмотря на то, что наша программа работает нормально, Psion рекомендует использовать собственные библиотеки. С их использованием код выглядит так:
#include <p_std.h>
#include <p_sys.h>
int main(void)
{
p_puts("Hello world");
p_getch();
return(0);
}
Файл проекта в таком случае надо изменить:
#system epoc img
#set epocinit=iplib
#model small jpi
#compile simple.c
#link simple
Что с этим делать дальше?
Разумеется, это не исчерпывающее руководство по программированию этих устройств, а всего лишь небольшой мануал касательно того, где найти нужный софт, как его установить и собрать программу. Теперь при желании что-то написать для данной платформы вам больше не придётся искать среди кучи битых ссылок всё необходимое.
Несмотря на сложность в поиске самого SDK, найти документацию, касающуюся программирования под SIBO/EPOC16 достаточно легко. Чего только стоит, например, Programming Psion computers by Leigh Edwards от EMCC Software. Там неплохо описано программирование не только на Си, но также и на OVAL/OPL.
Также неплохая документация вместе с примерами программ идёт в комплекте с самим SIBO C SDK.
Ссылки
SIBO C SDK и компилятор: http://old-dos.ru/index.php?page=files&mode=files&do=show&id=101191
OPL: http://old-dos.ru/index.php?page=files&mode=files&do=show&id=101072
OVAL: http://old-dos.ru/index.php?page=files&mode=files&do=show&id=101071
PsiWin и RCOM: http://old-dos.ru/index.php?page=files&mode=files&do=show&id=101064
Эмулятор Psion 3a: http://old-dos.ru/index.php?page=files&mode=files&do=show&id=6043
Эмулятор Psion 3c: http://old-dos.ru/index.php?page=files&mode=files&do=show&id=6045
Эмулятор Psion Workabout: http://old-dos.ru/index.php?page=files&mode=files&do=show&id=6058
Эмулятор Psion Siena: http://old-dos.ru/index.php?page=files&mode=files&do=show&id=6044
Programming Psion Computers: https://tobidog.com/ppc.pdf
dlinyj
Как же приятно, когда кто-то по мотивам пишет псот! Прям очень.
А с пепелацем этим тоже разбирался, но в те времена ничего дельного найти не удалось, да и карточек не было. Тогда только вот так смог применить:
Псот по теме.