Как стать автором
Обновить

Комментарии 110

Реквестирую «Программирование для Symbian в 2017»:)
Поддерживаю, тоже есть желание попробовать такое спустя много лет :) Много было разных Symbian смартов, но больше всего запомнился — 6630, превосходный девайс с одной из самых удобных клавиатур своего времени:
6630 - Symbian 8.0a FP2
image
Пробовал программировать для Symbian в 2010. Там своя среда на основе Eclipse (carbide c++, кажется) и абсолютно ужасный процесс отладки либо на отваливающемся устройстве, либо на виснущем эмуляторе. А, и ещё hello world состоит из 5 классов. А, и ещё при любом изменении весь проект пересобирается полностью, это несколько минут для того же hello world. А, и ещё своя реализация исключений. И упоротая схема наименования классов и методов. А, и ещё там есть дофига видов строк… Зато нативно поддерживается векторная графика в ресурсах — что-то, что андроид научился только начиная с 5.0.
Есть отладка по wi-fi для symbian 9.3+
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Недавно собрал GCC 7.1.0 с binutils&gdb :-)
Для Symbian UIQ3 еще более высший пилотаж бы был!
Это великолепно. Автор, пусть в твоей жизни всегда всё-всё-всё будет хорошо. Правда.

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


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


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

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

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

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

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

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

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

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

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

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


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

Насколько я помню, в устройствах palm, кроме последних моделей, не было никакой постоянной памяти. Все хранилось в ОЗУ и терялось при полной разрядке батарей. Точнее ПЗУ было, но в нём хранился только образ OS из которого она восстанавливалась при неоходимости. Отсюда и быстродействие и отсутствие поддержки файловых систем в ранних версиях OS — за ненадобностью.

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

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

а вот с palmos5 у них не вышел каменный цветок.
эмуляция m68k на arm, эмуляция старого API доступа к DB поверх NVFS (ох, сколько времени у меня ушло на вылавливание и обход глюков), попытка к старому API приделать web, мультимедию и т.п.
похоже, это был временный/переходной вариант, но пока разрабатывали идеологически верный (наверное) palmos6 поезд ушёл…
«Полноценный эмулятор» был у всех — но поведение на реальном устройстве всегда отличалось. Помню веселые времена, когда printf("%i"); (или что-то подобное) спокойно работал в эмуляторе PocketPC, но падал безо всяких сообщений на реальном устройстве.

А мегабайты — с ними просто. Я хотел игрушки делать, с графикой и анимацией. Но удовольствие работать с блоками памяти по 64кб и переписывать части кода в ассемблер m68k, чтобы добиться приличной скорости — не зашло. Я не осуждаю тех, для кого удовольствие повозиться с ограничениями платформы, есть множество любителей программирования под NES или Atari 2600, просто сообщаю что на фоне основного конкурента это была ужасная для программиста платформа — то, что делалось на PocketPC щелчком пальцев, на палме приходилось героически преодолевать.
Как было бы замечательно почитать такие ностальгические брюзжания с описанием почему не понравилось :)
«Полноценный эмулятор» был у всех — но поведение на реальном устройстве всегда отличалось. Помню веселые времена, когда printf("%i"); (или что-то подобное) спокойно работал в эмуляторе PocketPC, но падал безо всяких сообщений на реальном устройстве.


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

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

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


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

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

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

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

А можно поподробнее про сорцы?
вот нашёл:
Palm OS 4.0 Limited Sources
вроде бы были выложены куски и более старых версий, но не нашлось сходу, увы.
На указанном устройстве 4 больших кнопки… Так и просится ну_погоди.jpg
Хотя наверное они используются для управления и нельзя подобное написать.

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

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

Минимальная конфигурация для работы SimCity, насколько я помню, включала в себя 48К ОЗУ и процессор Z80 (8 бит, 3МГц). Так что на пальме ему было весьма просторно и комфортно :)
За статью спасибо, прочитал с огромным удовольствием) Вопрос несколько не по теме. Если не секрет, чем Вы занимаетесь, что находите время на такого рода занятия? Можно даже не конкретно о себе рассказать если не хочется, а просто анаморфно чем другие такие первооткрыватели обычно по жизни занимаются. Просто у самого имеются идеи в голове такого же рода, но времени на них не хватает катастрофически. Спасибо)
На самом деле я раздолбай :). Сейчас провожу различные курсы по линуксу: программирование, администрирование. Посмотрите у меня в ЖЖ. Мне нравится свобода и время. Это самое ценное что у нас есть.
Ахах, ну да, это было даже несколько предсказуемо) А вообще идеальный вариант, и время свободное имеется, и заработок. Самому впору курсы прям начать вести)))
Для Palm еще был HandHeld Basic. Вполне такой себе Visual Basic под Windows чтоб программировать под Palm. Один из самых кстати лучших по размеру кода
И восхотел я реанимировать данный пальм

И где же?!
Эх, так надеялся увидеть возню с железом с процессом восстановления девайса…
Я его передал в обмен на свой старый пальм (это тот самый мой пальм) и ИК-порт к нему. Плюс там операционка 3.2, что не подойдёт для моих программ…
хотелось бы увидеть подобную статью с описанием под windows.
Так как таких кпк много в наличии. пользуюсь постоянно. И хочется что то сделать под них самому. Смотрю переодически в сторону толстенных руководств. Но они не на русском. В сети что то не найти нормального русскоязычного руководства.
К сожалению я не пользуюсь Windows, да и вам не советую.
для вас лучше всего, наверно, будет поставить виртуальную машину с linux и проделать все операции из статьи. да, будет медленнее компилироваться, но зато проще начать.
Можно купить кодвариор ;).

Скорость компиляции будет одинаковая, как на виртуалке, так и найтивно — мгновенно.
Если вы беспокоитесь о том, чтобы сохранить всё необходимое для поколений, может сделать в конце статьи вставку с кратким описанием на английском что есть в архиве + ссылку на архив тоже на английском? Ведь вы наверняка что-то скачивали с англоязычных сайтов, и таких интересующихся умельцев много и за рубежом, глядишь и наткнутся на вашу статью
Вы можете сделать анотацию, я приведу. К сожалению ещё читать я как-то могу, а вот писать — увы и ах.
О, кто-то запустил мою версию 2048. Неожиданно. :)
Ух ты! Так это вы автор данной программы? Смотрел ваш гитхаб, вы много писали для пальмов?
Честно говоря, это был первый и единственный опыт программирования для PalmOS (и даже знакомства с ней). В то время мне достался Palm Vx, и я решил написать что-нибудь по такому случаю.
Шикарный опыт, я счиаю. Расскажите, что вы читали чтобы написать такое приложение? Откуда брали API всех функий и как настраивали компилятор? Полагаю, что прошли такой же путь…

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

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


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

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

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

На самом деле, на avito пальмы продаются за сущие копейки, так что поиграться можно.
Давайте лучше КПК с linux, не раздавайте. Очень актуальная тема на самом то деле, очень многие сейчас хотят производительную железку с линуксом в кармане, взамен иос или андроид. В частности интересует переустановка нативного линукс на соверемнные девайсы, ядро линукс в андройде очень замечательно работает, нужны более приятные дистрибутивы теперь %)
Мои те кпк были ОоОоОООООоочень старыми. А сейчас не знаю на чём можно поставить линукс и можно ли. Ну и практика показывает, что линукс не юзабелен на кпк. Никакой, увы…
не согласен, nokia n800/n900 был вполне юзабелен.
Здесь согласен. Сюда ещё n710 и n9, но это исключения из правил. Либо пилить свой линукс, либо пользоваться андройдом
Раз уж здесь обсуждается palm, то стоит вспомнить про palm webOS (на linux) — очень удобная система и устройства, я, например, до сих пор пользуюсь palm/hp pre3 и touchpad каждый день.
А что за железки на ней были? Не слышал никогда. И как с запуском приложений пальм?
На webOS были разные устройства, в основном вертикальные слайдеры с qwerty клавиатурой (pre, veer). hp touchpad — 9.7" планшет. Насколько я знаю, в первых устройствах на webOS было доступно приложение Classic, которое позволяло запускать пальм-приложения.
Плохо ищутся, как я понял — мало распространённая была. Но на ней сейчас делают телики.
Да, в России она наверно была не очень распространена, хотя было довольно интересное сообщество webos-forums.ru. Действительно, HP продала LG права на использование webOS в телевизорах, часах, проекторах и т.д., но при этом, что является огромным плюсом для энтузиастов, HP открыла исходники webOS.
Эх шикарные были устройства. Сам в начале 2000-х, в университетские годы, пользовался Palm m105. С ностальгией вспоминаю это устройство. Батарейки мне хватало на месяц! Притом я активно читал с него книги и играл в игры. А еще помню писал на него шпоры (преподы тогда вообще не знали о существовании кпк и думали что это калькулятор, поэтому на экзаменах не обращали на него внимание))) И даже пробовал писать программы на чем-то типа HandHeld Basic. Но дальше хелловорлда не ушел.
Вот-вот, тоже самое. Поэтому решил попробовать сейчас.
Я себе для T|T3 на HandHeld Basic наваял поиск адресов в городе Екатеринбурге, с показом картинки с флешки с этим адресом по центру (картинки как и адреса пограбил с сайта Екатеринбург на блюдечке, это конечно не очень хорошо, но для личных целей мне казалось нормально)

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

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

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

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

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

Надо не забывать, что там еще кнопки штрикодирования на КПК были, по ним все заполнялось.
Вот это крутяк, и надо думать это было кост эффективно…
Сначала нашли софт проверили, работает, закупили оборудование, а на последующих тестах оказалось, что там линейный поиск (а нужно было для большого количества номенклатуры) и при сканировании более 500 объектов задержки между сканированием достигают 5 минут, а номенклатуры более 3 тыс.
Кроме того, в 1С 7.7. того времени у разного товара мог быть одинаковый штрихкод, но разная цена, и тот софт не поддерживал.
Написали свой. Моментальное сканирование при любом количестве. Моментальный поиск. Быстрая синхронизация, поддержка инвентаризации объектов с разной ценой и одним штрихкодом. (спрашивало цену). В зависимости от сообщений (нет такой номенклатуры, лишняя, выбрать цену) выдавался различный звуковой сигнал, что когда ты на автомате сканируешь следующую тысячу объектов отлично помогает.
Меня очень интересует API работы с сами сканером. Ведь это железо…
Как-то так:
многа букоф
Инициализируем библиотеку сканера и получаем сообщения от системы:
	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;
}


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

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

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

На Джорнада?

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

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

ВинЦэ ведь.

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

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

image

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

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

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

Он там и стоит (в Nec и Jornada 720), но плюс я накатил linux/
Ностальгия! Первые 6 лет своей официальной программистской карьеры — это был как раз PalmOS, правда, не 4-й, как описано здесь, а 5-й. Из смешных моментов припоминаю фурор, который произвела моя прога в американской прессе — она восстанавливала стертые данные с б/у девайсов, в результате энтузиасты «с мусорки» подняли переписку тамошнего министра…
У меня до сих пор лежит в ящичке крутейший в свои времена Sony Clie с цветным «HD» 320х320 пикселей экраном. Фанател по этой штуке очень сильно, даже умудрялся через ик-порт и нокиа 6200 выходить в инет и запускать аську. Помню, порывался написать свою версию аськи, но после неудачных попыток разобраться в протоколе и апи палма подостыл к этому делу. И я точно помню, что ставил какую-то IDE под винду, и она точно работала без проблем.
Сейчас пользуюсь Tungsten E2 как читалкой и напоминалкой.

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

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

m68k-palmos-g++ -v в студию, а то такое ощущение, что там даже -std=c++11 не будет, а это меня сильно ограничивает. Минимум c++14 хотелось бы, таковое многие библиотеки требуют, но оптимально c++17, конечно.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории