Запуск User- и SysRPL-программы из текстового файла

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

Последовательность была такая:

  • Копируем текст со странички в текстовый файл (или загружаем текстовый файл)
  • Удаляем заголовок до первой открывающей кавычки "«", если он есть (например "%%HP: T(0)A(D)F(.);")
  • Записываем файл на SD-карточку, карточку вставляем в ПМК
  • Заходим в менеджер файлов, находим там файл и нажимаем EVAL в меню - программа копируется на стек
  • 'имя программы' STO

На этом процесс оборвался, т.к. надо объект-строку преобразовать в программу...

Объект-строку преобразовать в программу. Как это сделать с помощью карты памяти не знаю.

Если есть возможность подключить калькулятор к компьютеру с помощью официальной коммуникационной программки, то достаточно текстовый файл с заголовком до кавычки перетащить в её окно. Имя текстового файла становится именем программы. В частности, это относится к UserRPL-программам, тексты которых приведены здесь http://pmk.arbinada.com/node/721.

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

Нашёл способ обойтись без коммуникационной программы. Этот способ работает только для тех строк, которые были перенесены на ПК с помощью коммуникационной программы или имеют такой же синтаксис (последовательности символов с обратным слэшем, digraphs).

Поэтому для UserRPL/SysRPL программ-СТРОК последовательность действий теперь такая:

  • Копируем текст со странички в текстовый файл (или загружаем текстовый файл)
  • Удаляем заголовок до первой открывающей кавычки "«", если он есть (например "%%HP: T(0)A(D)F(.);")
  • Записываем файл на SD-карточку, карточку вставляем в ПМК
  • Заходим в менеджер файлов, находим там файл и нажимаем EVAL в меню - программа(=строка) копируется на стек
  • Запускаем программу << 3 TRANSIO # 2F34Dh SYSEVAL DROP STR-> >>
  • 'имя программы' STO

Другие команды преобразования файлов программ (=строк) при переносе с/на ПК см. в Programming in System RPL / Eduardo M. Kalinowski, Carsten Dominik, стр. 181.

Программа преобразования заработала такая. Набираем:

<< ->STR 3 TRANSIO RCLF SIZE 3 > #2F34Dh #3016Bh IFTE SYSEVAL + STR-> >> 'IN' STO

Жмём - в переменной IN у нас сидит преобразователь.

Теперь копируем текст программы на стек упомянутым способом с карты или с помощью коммуникационной программы (для linux нужно установить hptalx).

Вызываем софт-клавишей нашу программу IN, ждем (на 700 строк "Лунолёта-3" уходит более 10 секунд). В итоге на стеке сидит преобразованная в бинарный формат программа.

Записываем её в переменную, например 'MYPRG' STO нажимаем , потом вызываем соответствующей софт-клавишей.

Про установку hptalx, видимо, надо написать подробнее. Есть достаточно подробная процедура, но на английском.

Программа, указанная Вами, содержит адрес #3016Bh, который (если судить по информации по ссылке) используется в калькуляторах HP 48, т.к. команда KINVISLF конвертации digraphs в символы калькулятора в них имеет этот адрес, а в HP 49/50 адрес #2F34Dh. Анализ длины списка флагов калькулятора ( RCLF SIZE 3 > ) позволяет понять на каком калькуляторе запущена программа преобразования на HP 48 или HP 50. Поэтому на HP 48 моя программа работать не сможет.

Свою версию программы проверял на эмуляторе HP 50g на текстах "Разных программ для решения задач по высшей математике (HP 50g)" (http://pmk.arbinada.com/node/721). Для программы "Прогулка по лунолётам. 3 - Оживляем "Кон-тики"" (http://www.pmk.arbinada.com/node/715) такую проверку не проводил. Однако, сейчас проверил её и на этой программе всё сработало.

P.S. Выполнял процедуру так: Копирую текст с "программными" кавычками, создаю текстовый файл (ANSI), перетаскиваю текстовый файл на экран эмулятора, запускаю программу << 3 TRANSIO # 2F34Dh SYSEVAL DROP STR-> >>, вижу в стеке преобразованную программу, сохраняю под нужным именем. Почему программка не сработала ?

Программа. Ваш вариант программы тоже работает, просто я был занят подключением ПМК к компьютеру с Ubuntu, и в процессе пользовался разной информацией из сети, в том числе приведенным вариантом программы, который, как я понимаю, работает и на 48 и 49 моделях.