После многих экспериментов могу с уверенностью сказать — разработка мидлетов на GPCP возможна.
Анонсирую
кроссплатформенную игру Dash, разрабатываемую на Оберон-языках:
https://sourceforge.net/projects/bolderdash/https://github.com/Oleg-N-Cher/Dash/Столь различные платформы выбраны чтобы показать практическую мощь Оберон-технологий.
J2ME — 32-битная, как правило, для карманных устройств (мобильных телефонов) с маленьким экраном (разрешение варьируется от 128x128 до 240x320 и выше) глубиной цвета от 256 до 65536 цветов и небольшим количеством кнопок (или сенсором).
MS DOS — 16-битная классика. Кто не помнит Prince of Persia, DOOM или Norton Commander? Для усложнения условий решено ограничиться графикой CGA (320x200, неквадратные точки, 4 цвета, выбираемые из нескольких палитр).
ZX Spectrum — тоже классический 8-битный компьютер 80х - 90х годов. Специфическое строение экрана с атрибутной цветностью (из квадратиков), 48 Кб ОЗУ.
Цель проекта — отделить машинно-независимое представление игры в рамках стандарта языка Оберон-1 от платформенно-зависимых прослоек, разработанных на диалектах Оберон-1, Оберон-2 и Компонентный Паскаль.
Пример портабельного игрового кода:
Код: "OBERON"
MODULE Dash; (** portable *)
IMPORT
GrScr, Rsrc, Til := GrTiles;
VAR
title: Rsrc.Resource;
titleSize: INTEGER;
BEGIN
Til.SetSize(10, 10, 5, 5);
title := Rsrc.Open(Rsrc.Title);
titleSize := Rsrc.TitleSize;
REPEAT
Til.PutTile(Rsrc.ReadByte(title), Rsrc.ReadByte(title),
Rsrc.GetTileByNum(Rsrc.ReadByte(title)));
DEC(titleSize);
UNTIL titleSize = 0;
Rsrc.Close(title);
GrScr.Repaint;
END Dash.
Пример непортабельной прослойки-биндинга к платформе J2ME на Компонентном Паскале:
Код: "OBERON"
MODULE Timer; (** non-portable *)
IMPORT
lang := java_lang;
PROCEDURE Delay* (msec: INTEGER);
BEGIN
lang.Thread.sleep(msec);
RESCUE (interruptedException);
END Delay;
END Timer.