Программируемый калькулятор DM42

Создал тему для обсуждения калькулятора DM42 швейцарского производителя DM SwissMicros.

Ссылка на мой блог Приехал DM42 - первые впечатления.

nqueens

DM42 Beta firmware V2.10.14 available.

Release notes:
"SETUP -> File -> Load program" now sorts the available programs alphabetically and the list wraps if you scroll downwards from the last program or upwards from the first.
"SETUP -> System -> Disk check" has been renamed "FAT Disk Media Test" and the associated screens have been re-worded in order to indicate more explicitly that the test is destructive.
Alpha input mode is completely overhauled. Further notes below explain how to use it.
Custom "OFF" screen image support. See notes below.

New Alpha input mode
Upon entering Alpha input mode you will now see a new annunciator on the screen:
"[ ]" denotes original HP-42S input mode. This is the mode that Alpha input starts with.
"[a]" denotes lower case DM42 input mode.
"[A]" denotes upper case DM42 input mode.
[SHIFT] followed by [UP] and [DOWN] allow you to cycle through the modes.

Original HP-42S mode:
Function keys work as expected for standard characters.
ASTO (STO) and ARCL (RCL) work as expected.
"%", "pi" and "E" work as expected.
[SHIFT] [.] (SHOW) works as expected.
Local labels LBL 01, LBL A and LBL a work as expected.
Global labels LBL "ABC", LBL "123" and LBL "A123" work as expected.
Unshifted [R/S] works as expected and [SHIFT] [R/S] enters/leaves Prgm mode as expected.
Lower and upper case DM42 modes:
The function keys still allow input in HP-42S mode.
All alpha keys A-Z give the expected characters.
[SHIFT] [A] to [SHIFT] [O] give the same characters.
[SHIFT] [0] (zero) to [SHIFT] [9] give the digits 0-9 instead of the alpha characters.
Shifted [/], [x], [-] and [+] give '/', 'x', '-' and '+' instead of the alpha characters.
Shifted [R/S] gives '?' instead of entering/leaving Prgm mode.
ASTO, ARCL, '%', 'pi' and 'E' (exponent) are not available. Switch to standard HP-42S mode to get them.
[SHIFT] [.] (SHOW) is not available. Use standard HP-42S mode.
Two-digit local labels LBL 01 are not available. Use standard HP-42S mode, which is the default mode enterd after pressing [LBL] anyway.
Local labels LBL A and LBL a and global labels LBL "ABC", LBL "123" and LBL "A123" work as expected.
Unshifted [R/S] still behaves as usual allowing program execution to resume after inputting alpha data to a program.
Function arguments (eg. STO* "h") work as expected

"OFF" screen images
Images placed in the OFFIMG directory of the FAT disk are displayed on the LCD when the DM42 is switched off. They replace the "sleeping owl" image in the DM42's ROM. If this directory doesn't already exist then create it yourself when the DM42 is connected to your computer in USB Disk mode.

If there are multiple images in the directory, the DM42 cycles through them each time it is switched off.

The images must be in Windows NT bitmap format (.bmp files) at resolution 400x240, 1 bit per pixel.

---------------------------
Истина где-то рядом
www.litres.ru/vitaliy-samurov/dozvonitsya-do-devy/

С новой прошивкой .14 стало возможным делать свои экраны выключенного состояния:
Kontiki on DM42

---------------------------
Истина где-то рядом
www.litres.ru/vitaliy-samurov/dozvonitsya-do-devy/

Это просто здорово. Начинаю думать над покупкой. Придется продать HP 50g тогда.

А еще там на форуме ходят слухи, что функциональность "чистого HP42s" поместят под конфигурационный флаг в системном меню, а те, кому не важна "чистокровность", могут наслаждаться командой PIXEL на всей красоте графического экрана 400x240

---------------------------
Истина где-то рядом
www.litres.ru/vitaliy-samurov/dozvonitsya-do-devy/

Результаты теста Счастливые билеты на DM42 (без алгоритмической оптимизации, прошивка Beta V2.10.17):
- Питание от батареи: 31 мин 40 сек
- Питание от USB: 12 мин 35 сек

Программа:

00 { 91-Byte Prgm }  21 RCL 04      42 RCL 01
01▸LBL "TICKETS"     22 IP          43 STO 03
02 901ᴇ-5            23 RCL 05      44 ISG 06
03 STO 01            24 IP          45 GTO 01
04 STO 02            25 +           46 RCL 01
05 STO 03            26 RCL 07      47 STO 06
06 STO 04            27 IP          48 ISG 04
07 STO 05            28 +           49 GTO 01
08 STO 06            29 X≠Y?        50 RCL 01
09 STO 07            30 GTO 02      51 STO 04
10 0                 31 RCL 00      52 ISG 05
11 STO 00            32 1           53 GTO 01
12▸LBL 01            33 +           54 RCL 01
13 RCL 02            34 STO 00      55 STO 05
14 IP                35▸LBL 02      56 ISG 07
15 RCL 03            36 ISG 02      57 GTO 01
16 IP                37 GTO 01      58 VIEW 00
17 +                 38 RCL 01      59 BEEP
18 RCL 06            39 STO 02      60 END
19 IP                40 ISG 03
20 +                 41 GTO 01    

---------------------------
Истина где-то рядом
www.litres.ru/vitaliy-samurov/dozvonitsya-do-devy/

Как то не впечатляет результат по скорости в сравнении
с уже приводимыми ранее результатами этого теста на STM32 контроллерах
с использованием Форт систем.

P.S. Похоже не лучший дизайн внутренней виртуальной машины, даже если она написана на С (С++)
GForth (реализация на С) тоже существенно проигрывает некоторым Форт системам (не только коммерческим)

Ну, видимо, потому что сравнивать вычисления целочисленного Форта с вычислениями с библиотекой повышенной точности не совсем корректно. Даже 16-битный микроконтроллер msp430g2553 отщелкал билеты за 29 секунд.

---------------------------
Истина где-то рядом
www.litres.ru/vitaliy-samurov/dozvonitsya-do-devy/

Почему по переменным цикла - целочисленным (по диапазону и приращению)
"делается вывод" что использовать их нужно как с плавающей запятой?

P.S. Отсутствие типизации это не аргумент для понимания данного вопроса и как его решить
и точно не повод считать все числа программы плавающими :)
В Форте, например, операции вычисления плавучих аргументов имеют преффикс F и данные для вычистения уже рассматриваются в этом формате.
Могли бы добавить, например I переменную понимаемую как целочисленный индекс.
В Фортране было правило, что переменные начинающиеся с букв I, J, K целочисленные (вроде)

Почему по переменным цикла - целочисленным (по диапазону и приращению)
"делается вывод" что использовать их нужно как с плавающей запятой?

Это про DM42? Я не знаю, как там реализованы циклы, в регистры загоняется не целочисленное число.
Арифметические операции точно с повышенной точностью.

Вообще было бы здорово иметь типизацию в RPN калькуляторах.

А 4E4th целочисленный, и на 16-битном RISC процессоре, работающем на 16 МГц частоте, этот Форт выдал по максимуму.

---------------------------
Истина где-то рядом
www.litres.ru/vitaliy-samurov/dozvonitsya-do-devy/

Плавучка везде, корректная реализация ею целочисленных вычислений — особенность калькуляторов. Они проигрывают на трудозатратных целочисленных задачах. На МК-161 тест занимает 1 час 32 минуты.

Каллисто тоже затачивается не под обработку больших объёмов целочисленных данных (для этого есть низкий уровень), а под математические расчёты с «плавучкой».

Thomas, автор Free42, выложил пример графической программы для Free42/DM42:
Circle

На швейцарском форуме проскакивает инфа о том, что команда работает над поддержкой всего разрешения экрана. Жду с нетерпением.

Исходный текст программы:

00 { 103-Byte Prgm }
01▸LBL "CIRCLE"
02 "CIRCLE[LF]  CIRCLE"
03 AVIEW
04 DEG
05 0.36
06 STO 00
07▸LBL 00
08 RCL 00
09 IP
10 7.5
11 →REC
12 8
13 +
14 X<>Y
15 48
16 +
17 PIXEL
18 ISG 00
19 GTO 00
20 SF 34
21 SF 35
22 44
23 255
24▸LBL 01
25 XTOA
26 DSE ST Y
27 GTO 01
28 1.00908
29▸LBL 02
30 1.13144
31▸LBL 03
32 AGRAPH
33 ISG ST X
34 GTO 03
35 R↓
36 ISG ST X
37 GTO 02
38 END

---------------------------
Истина где-то рядом
www.litres.ru/vitaliy-samurov/dozvonitsya-do-devy/

Тут тестируют DM42 против оригинального HP42s и DM41L:

"These two machines plus a DM41L are crunching numbers, using a kind of brute force method of finding a specific pythagorean triple."

---------------------------
Истина где-то рядом
www.litres.ru/vitaliy-samurov/dozvonitsya-do-devy/

Народ с форума протестировал DM42 на предмет Calculator Permormance Index:

Running on battery power I do 100 iterations of the calculation in 2.87 seconds. Connected to USB the 100 iterations are performed in 0.85 seconds.

I believe that gives the DM42 a performance index of 1185 or 4000 depending on the CPU speed, which means that it is outstripped only by the HP Prime if you're looking at physical calculators rather than emulators or desktop PCs.

Это означает, что DM42 на сегодня самый быстрый на планете Земля из калькуляторов в физическом виде, который программируется на RPN

---------------------------
Истина где-то рядом
www.litres.ru/vitaliy-samurov/dozvonitsya-do-devy/

Неплохо бы использовать в этом тесте "Коэффициент использования", как это было в тесте "Пустой цикл"

Это типа такого?

00 { 24-Byte Prgm }
01▸LBL "BB"
02 3000.00001
03 STO 00
04▸LBL 00
05 DSE 00
06 GTO 00
07 RTN
08 END

Померял: питание от батареи: 2.9 секунды, от USB: 1 секунда

---------------------------
Истина где-то рядом
www.litres.ru/vitaliy-samurov/dozvonitsya-do-devy/

Не плохо, но я имел в виду что в тесте Calculator Permormance Index:,необходимо добавить еще одну колонку ( коэффициент использования) , которая учитывает еще тактовую частоту процессора.

Совершенно непрактичная величина, которая была введена эксклюзивно на этом сайте с единственной целью унизить «Электронику МК-161» — показавшую в тестах высокий результат. Что автору материала сильно не понравилось.

Практичней было бы, например, учесть время работы. Объём вычислений, который можно выполнить без подзарядки или смены батареек.

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

На практике калькулятор — (взаимозаменяемый) чёрный ящик. Важнее всего в тестах производительности, сколько секунд вычислений займёт верное решение. От этого и зависит выбор, какие калькуляторы «потянут» поставленную задачу.

Частота камня (внутренняя величина, которую часто именно по этой причине скрывают от дураков) влияет на две внешние вещи: (1) цена калькулятора и (2) время автономной работы. Хотя производительность это главное, стоимость этой производительности в рублях или «прожорливость» по электричеству также могут повлиять на выбор «чёрного ящика».

Увидев, что Каллисто, за счёт хорошо реализованного входного языка МК-161, «вылизывания» адресного интерпретатора и (да!) частоты камня, по производительности в 18 раз превосходит советские ПМК (51,7 vs 2,75 цикла/с), Арбинада мгновенно высосал из пальца абсолютно бесполезный на практике «коэффициент», который подтасовывает данные к предвзятому результату, который ему хотелось видеть и разрекламировать пожирней. Попытавшись выставить разработку альтернативных входных языков для ЭКВМ менее привлекательной. Хотя большой запас производительности, заложенный в МК-161, вполне позволяет разрабатывать такие входные языки.

Ни в одном из западных тестов калькуляторов нет подобных подтасовок, с делением производительности на мегагерцы. Это именно отечественное know how, вызванное желанием помешать развитию отечественной «Электроники».

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

В тестах калькуляторов такой подход — обычное дело. Позволяет увидеть, где достаточно гужевого транспорта, а где потребуются самолёты. Удивительно, что для некоторых задач советских МК-61 достаточно. Есть более сложные задачи, где сработает Каллисто. Есть задачи, где потребуется переходить на входной язык МК-161 или даже ассемблер.

Во всех других тестах калькуляторов — не только зарубежных, но даже на этом сайте — тактовая частота не учитывается. Только в том единственном(!) тесте, куда я передал данные по Каллисто (Форте на МК-161) частоту процессора внезапно использовали, как делитель. И «результатом» сделали не полезную для решения задач производительность, а странный бесполезный индекс, на котором системе двойной интерпретации выиграть трудно — принижающий значение моей разработки.

Хотя данный тест, предложенный в журнале «Байт» умными людьми и упомянутый мною здесь, ничего подобного не включал. Там просто пустой цикл, который выполнялся ровно 30000 раз (видимо из-за переполнения signed integer на 40000 в некоторых системах) — и на основе скорости его исполнения сравнивались различные системы программирования.

Применяя вашу аналогию — можно увидеть, например, «мерседесу» какого года интересующий вас автомобиль соответствует. :-) Мне было интересно, насколько Форт с десятичной «плавучкой» на портативном МК-161 образца 2009 года быстрее / медленнее целочисленного Форта для настольных ПК 1980 года.

Глупости, в тестах производительности (benchmark) всегда указывается частота процессора, как минимум. Если тесты проводятся на разном оборудовании, то используются различные коэффициенты и методики приведения к общему индексу. Даже для СУБД существует такой показатель, как "N тысяч транзакций в секунду", приводимый к стоимости одной транзакции (в расчете на стоимость оборудования).

Ко всему прочему, результат у МК-161 очень неплохой для интерпретируемых входных языков.

24 и 80 МГц соответственно.

---------------------------
Истина где-то рядом
www.litres.ru/vitaliy-samurov/dozvonitsya-do-devy/

Да, это самый быстрый калькулятор.

Забавно, если применить коэффициент использования к DM42 , то получится 49 и 50 соответственно ( может быть и есть в этом какой то смысл).

Vitasam wrote: 24 и 80 МГц соответственно.

Добавил результат в таблицу, посмотри, пожалуйста, все ли верно?

Вроде, все правильно. И да, у мк161 неплохой результат

---------------------------
Истина где-то рядом
www.litres.ru/vitaliy-samurov/dozvonitsya-do-devy/

Изменения UI в новой прошивке DM42 Beta Firmware V2.11.1 меня радуют:
UI 1UI 2

Из Release Notes:
...New screen layout
The DM42 has broken out of the traditional 2-line display jail imposed by the HP-42S and by Free42!

We can now take advantage of the LCD's resolution and we are no longer limited to the clunky 7x5 font in menu labels, which also means that lower case letters appear in them.

The full stack is now shown in the same font. There is no separation between the Free42-managed display and the DM42-managed part because all of it is now managed by the DM42. The stack is also updated periodically during program execution and stack values are right-aligned.

Up to 9 lines of program are now displayed in PRGM mode.

Graphics display is still restricted to the old 132x16 window (for now...) but that appears at the top of the screen above the stack, so you get to see graphics information and the stack now.

A few extras...
Some of the function keys in the top row now have functions assigned to them that work only when there is no HP-42S menu showing. They originally started out as debugging aids but we got so used to having them that we decided that they should be features in their own right and be included in beta and production firmware when the time comes.

F4 key
This toggles a faint horizontal line that appears below each stack level.

F5 key
This key toggles an overlay showing the display of the original HP-42S.

F6 key
Cycles through 6 available font sizes from smallest to largest. You get 9 rows of text on-screen at the smallest size down to 5 at the largest size.

---------------------------
Истина где-то рядом
www.litres.ru/vitaliy-samurov/dozvonitsya-do-devy/

Обновил прошивку до 11.1
new fw

---------------------------
Истина где-то рядом
www.litres.ru/vitaliy-samurov/dozvonitsya-do-devy/

Vitasam wrote: Обновил прошивку до 11.1
new fw

Удобно.
Жаль, что в оригинальном Free42 автор так и не добавил многострочный экран.
Кроме этого мне (после современных калькуляторов) в 42-ом еще недостает флага, включающего бесконечный стек, пусть и в ущерб обратной совместимости.
Это, если не ошибаюсь, вместе с многострочностью, давно реализовано во Free42 для iPhone-a, но почему-то не в версиях для андроида или PC :(

Thomas активно участвует в форуме про DM42, но, такой экран - это intellectual property SWissMicro, так что сложно сказать, появится что-то во Free42

---------------------------
Истина где-то рядом
www.litres.ru/vitaliy-samurov/dozvonitsya-do-devy/

Я и не надеюсь уже. Развитие Free42 давно остановилось, автор только баги подчищает.
А этой функции на яблоках сто лет уже, так что с "intellectual property SWissMicro" - это перебор ;)
42s

Вполне возможно, я не знаю, где там у них сейчас проходит граница между Free42 и закрытым кодом SwissMicro

---------------------------
Истина где-то рядом
www.litres.ru/vitaliy-samurov/dozvonitsya-do-devy/

На форуме появились дразнилки грядущей прошивки DM42:

PIXEL and AGRAPH are receiving a bit of a makeover at the moment and 3 resolutions will be supported: 131x16 (original HP-42S screen resolution), 200x120 and 400x240. Exactly how the resolution will be switched is still being worked on. Stay tuned...

dm42dm42 1dm42 2

---------------------------
Истина где-то рядом
www.litres.ru/vitaliy-samurov/dozvonitsya-do-devy/

Надо попробовать Лунолет в высоком разрешении отрисовать :)

---------------------------
Истина где-то рядом
www.litres.ru/vitaliy-samurov/dozvonitsya-do-devy/

Сидя в кафешке, начал писать подпрограмму рисования линий на DM42. Первые строки пользовательского меню тестовой оболочки.
user menu

---------------------------
Истина где-то рядом
www.litres.ru/vitaliy-samurov/dozvonitsya-do-devy/

Брутальное программирование! :)

Можно вообще не пользоваться бумагой при написании программы, метки таки сильная вещь. И очень импонирует мысль, что, по сравнению с HP35s, программу не придется руками переписывать из калькулятора :)

---------------------------
Истина где-то рядом
www.litres.ru/vitaliy-samurov/dozvonitsya-do-devy/

Метки - вещь нужная и даже где-то сильная, но конструкции if-then или while-end гораздо сильнее, утверждаю, как бухгалтер реализатор компиляции этих конструкций в код виртуальной стековой машины :)

Да, прошла эпоха. Вот сижу и смотрю как легко выглядящий код на Питоне тяжело и со скрипом влезает в RPN 42s.

---------------------------
Истина где-то рядом
www.litres.ru/vitaliy-samurov/dozvonitsya-do-devy/

Создаёт иллюзию простоты и расхолаживает. В итоге уровень абстракции микроскопический и куча копи пасты. Форт - это вещь в этом плане. Глянул исходники Форта для софт-процессора J1 (тот что в Gameduino), там в очень коротком тексте реализован TCP/IP и протоколы над ним. Вот где офигеть можно.

мог придти в очень странную голову :)
С другой стороны - быстро проверить алгоритм на Питоне можно на любой кофеварке, куда есть SSH доступ. А вместе с Numpy это вообще замена Матлабу почти.

J1 интересно. Какой минимальный FPGA камень нужен для него?

---------------------------
Истина где-то рядом
www.litres.ru/vitaliy-samurov/dozvonitsya-do-devy/

Вообще там
http://microsin.net/programming/avr/gameduino-game-adapter.html
стоит какой то скромный Xilinx XC3S200A 4032 логических ячеек. И J1 наверное занимает не больше 1500 штук. Есть документы по дизайну этого J1 и все исходники.

Синтаксис зависящий от табуляции вполне нормальное дело, это не главный
аргумент против пистона. Мне больше не нравится, что его синтаксис высосан
по произволу из того же места, что и перловский :-)

Перл...

Хорошо, на чем можно быстро проверить алгоритм с графикой? Отрисовкой линий, окружностей и т.п.?
Python + Pygame дают мне это легко. Можно, к примеру, ресечить очередной миф о том, что на Луну не летали.

---------------------------
Истина где-то рядом
www.litres.ru/vitaliy-samurov/dozvonitsya-do-devy/

Ну какой питон и пигейм в калькуляторе ! :-) Как программу то набирать ?
Форт, Лисп - минималистичные в плане синтаксиса языки со богатыми возможностями рисовать любой синтаксис, если очень сильно надо.
10 10 100 100 LINE
10 10 100 CIRCLE
Или (LINE 10 10 100 100) (CIRCLE 10 10 100 :COLOR :RED)
Чем плохо ?

Другой вопрос когда там кучи циклов замешиваются и алгебраические формулы, вроде
как в постфиксной и префиксной нотации оно страшно смотрится. В Лиспе лазейка есть, макросы loop и infix. В Форте наверное тоже.

В общем RPL и его среда были концептуально правильными, но неудобными. Чтобы было удобно, надо окультуривать, добавить сахару, но чтобы не скатилось до Питона.
Например можно сразу сделать мощные средства итерации по коллекциям, которые будут эффективно компилироваться, чтобы у юзера не было соблазна писать мерзкий запутанный императивный код.
В общем аля фильтры списков и т.п. как в функциональных языках. Сразу оснастить язык структурами, чтобы их не пришлось встраивать насильно. Для калькулятора конечно и спец.таблица как в Lua и JavaScript с прототипной моделью наследования в нагрузку.
В общем я надеюсь у меня руки дойдут и я смогу выкатить этот самый RPL мечты, о котором уже давно болит голова :-)

Не, я не про калькулятор выше говорил, а про ПЦ - на чем на ПЦ можно быстро набросать что-нибудь графическое удобоваримым способом.

В калькуляторе, конечно же, Питон нафиг не сдался

---------------------------
Истина где-то рядом
www.litres.ru/vitaliy-samurov/dozvonitsya-do-devy/

По хорошему ПМК мечты должен подхватывать основные беспроводные клавиатуры и дисплеи — помимо «родных», разработанных специально для него. Такой ПМК сможет потянуть любые языки программирования.

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

Должен подхватывать (если BT включен). Кстати к TI-89 можно же подрубить спец. клавиатуру через COM порт.
Беспроводная ещё лучше будет. Но в плане портативности, энергосбережения и специализированности (на встроенной клавиатуре могут быть специализированные для быстрого ввода символы) - встроенная клавитура всё равно должна быть. А если делать упор на разработку на коленке, то есть ПМК или ЭКВМ - это средство малой автоматизации в том числе на случай когда большие компы поднять уже невозможно - то должен быть и "малый" компактный язык вроде Форта, чтобы можно было жить на коленке, когда всё остальное уже не запускается. Это даже не ситуация фаллаута, а любой сбой системы энергообеспечения. Как бы всё не сбивалось, надо иметь удобные и специализированные для вычислений и работы с периферией средства. На том и стоять :-) СЕМИКО кстати не мешало бы подкинуть апокалиптические идеи для раскрутки, может быть выживальщики начнут девайсы скупать бочками, оно и как оружие ближнего боя сойдёт :-)

СЕМИКО кстати не мешало бы подкинуть апокалиптические идеи для раскрутки, может быть выживальщики начнут девайсы скупать бочками, оно и как оружие ближнего боя сойдёт :-)

Хахаха! Да, это было в Правилах настоящего бруталиста:

70. Пользуйся калькулятором МК-152 и всегда носи его на шее.
87. Выучи ассемблер калькулятора МК-152, читай программы вслух брутальным гроулом.
88. Видишь компьютер - разбей его с размаху калькулятором МК-152.
108 МК-152 становится еще полезней если его привязать к резинке от трусов и крутить над головой во время давки в метро
109 МК-152 заставляет бруталиста думать поэтому при его использовании бруталист орет (см. пункт 4)
129. Если МК-152 поломался, настоящий бруталист использует для ремонта гаечный ключ на 48 и электросварку.
150 Для выхода в интернет надо написать на МК-152 браузер для МК-152

---------------------------
Истина где-то рядом
www.litres.ru/vitaliy-samurov/dozvonitsya-do-devy/