Программирование под SIBO (EPOC16) в наши дни

Вдохновлённый статьёй пятилетней давности товарища @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 Workabout MX 2MB, общий видPsion Workabout MX 2MB, общий вид

Состояние, конечно, не лучшее: нет ни подставки, ни модулей памяти (Psion SSD), корпус зачухан. Впрочем, учитывая, при каких условиях он мне достался, ничего так экземпляр.

Спереди у нас находятся все основные элементы управления. Зелёная клавиша в центре активирует сканер штрих-кодов. Направление сканирования, кстати, можно поменять, поворачивая сканирующий блок на удобный вам угол.

Psion Workabout MX 2MB, обратная сторонаPsion Workabout MX 2MB, обратная сторона

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

Psion Workabout MX 2MB, лотокPsion Workabout MX 2MB, лоток

А вот и сам лоток. В нём находятся отсек для основных батарей, отсек для резервной батареи, а также два слота под Psion SSD. Увы, из-за разряда резервной батарейки содержимое памяти «протухло». Мне не удалось найти какое-либо ПО для сбора данных под EPOC16, если вдруг оно есть у вас и вы готовы поделиться, буду очень рад.

Psion Workabout MX 2MB, портыPsion Workabout MX 2MB, порты

А вот и порты. Слева обычный COM, справа проприетарный разъём для подключения кабеля 3Link.

COM-порт является неоспоримым преимуществом данного устройства — его можно подключить к компьютеру при помощи обычного нуль-модемного кабеля. Его можно как купить, так и сделать самому. Я использовал кабель от кассового аппарата «Феликс-02К», всё работало отлично.

Psion Workabout MX 2MB, платаPsion Workabout MX 2MB, плата

Что мы делаем, когда нам в руки попадает очередная интересная железка? Правильно: мы её разбираем. Вот так вот выглядит материнская плата данного девайса. Отчётливо видны проприетарный чип 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, начинаем установку.

e43f5ce57e5226e478a7fb6573e57cf8.JPG

Ничего не меняя, продолжаем.

ed3f5aa51a833a09159bc35fdd409f65.JPG

Тут нужно убедиться, что параметр «Small memory model libraries for DOS» активирован.

Аналогичным образом ставим ПО из папки DOSENV. Всё, компилятор установлен.

Теперь очередь SDK. Вставляем первую дискету с ним и запускаем батник install.bat. Ставим прямо в корень диска C. Ту же самую операцию проводим с двумя другими дисками. Ставим всё, лишним оно точно не будет.

8e406473b7ae33ca655cfa939dc95403.JPG

Теперь открываем в текстовом редакторе 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. Если всё было сделано правильно, получится примерно следующее:

234e2c53ff3183d74a54a29c8c33d5bd.JPG

Всё, с установкой закончили. Можно приступать непосредственно к программированию.

Первая программа

Создаём в корне диска C папку, например, WORK. Название тут особого значения не имеет. Далее копируем в неё файл TS.RED из папки C:\SIBOSDK\SYS. И создаём ещё несколько файлов:

HELLO.C следующего содержания:

#include 
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 и смотрим, что получится. А получиться должно примерно следующее:

928d6a5310920ffeb1de597b74ccc82e.JPG

Эмулятор

Разумеется, хочется попробовать запустить нашу программу и посмотреть, что же получилось. Для этого скачиваем эмулятор, в папке с ним запускаем батник INSTALL.BAT. После этого на диске C: будет создана папка с эмулятором. Запускаем RUNME.BAT, далее в эмуляторе жмём клавишу F9, выбираем «Special\Remote Link». Активируем связь с ПК.

825f25542eb30dd8fbdfa16b422b96cc.JPG

Всё, эмулятор готов принимать в себя исполняемые файлы. Попутно можно поиграться со стандартным ПО.

Запуск

Ну что же, теперь настала очередь запуска нашей проги.

Переходим в нашу папку C:\WORK и запускаем MCLINK. Если эта утилита не запускается — проверьте ваш PATH.

После открытия программы надо дождаться появления надписи «Link established». Я особо не мучился, а просто связал DOSBox и VMWare при помощи Virtual Serial Port Driver.

a5527135540018f4942c166d6224dff5.JPG

Копируем наш исполняемый файл, для чего набираем:

copy hello.img rem::m:\img\hello.img

Если всё скопировалось успешно, в эмуляторе появится наша прога.

c81a07c9ec78b3aa3d8b7ed9fbb3e419.JPG

Запускаем её, и, если на предыдущих этапах мы нигде не накосячили, на экране должно будет появиться примерно следующее:

a6fd414cae73ee73f6623e44c85872e1.JPG

А как там на железе?

Разумеется, после успешно собранной программы хочется опробовать её на реальном устройстве.

Итак, берём наш Workabout, вставляем батарейки, настраиваем Remote Link, в настройках VMWare меняем проброс COM-порта…

И оно таки работает.

b72ddd927e96a83ba3aae3381dd98522.jpg

Более правильный вариант

Несмотря на то, что наша программа работает нормально, Psion рекомендует использовать собственные библиотеки. С их использованием код выглядит так:

#include 
#include 
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

© Habrahabr.ru