Не так давно на Хабре была статья про графический калькулятор TI-83, и, поскольку я являюсь обладателем TI-89 Titanium — калькулятором следующего поколения от Texas Instruments, под катом я решил рассказать про него, и показать, как для этого калькулятора можно создавать свои собственные программы на С.

В отличие от TI-83, в основе которого лежит 8-ми разрядный микропроцессор z80, TI-89 Titanium создан с использованием 32-х разрядного Motorola 68000:

image

Кроме этого, TI-89 Titanium обладает рядом других улучшений. Здесь я приведу его краткие характеристики:

Процессор — 12 MHz MC68000, экран — монохромный, 160x100 пикселей, 256K RAM (188K доступно пользователю), 4M Flash ROM (примерно 2.7M доступно для пользователя), Standard I/O (никогда не пользовался), USB Mini Port (используется для обмена информацией с обычным компьютером):

image

Питается он от четырех батареек AAA (надо сказать, что ��отребляет достаточно много, так что при интенсивном использовании батарейки приходится менять достаточно часто). Имеется также дополнительная батарейка, сохраняющая настройки при замене основных батареек:

image

Существует множество ресурсов в интернете, посвященных калькуляторам TI и, в частности, TI-89 Titanium. В качестве примера можно привести www.ticalc.org. На этом ресурсе можно найти огромное количество различных описаний, программ и исходников для этого и других калькуляторов TI, например, игрушек.

На самом деле, этот калькулятор предназначен для математических расчетов, и содержит в себе CAS (computer algebra system), которая позволяет производить не только численные расчеты, но и расчеты в символьной форме:

image

Но нас интересует, как создавать свои собственные программы на С. Для этого существует компилятор tigcc (http://tigcc.ticalc.org) созданный на основе gcc. К сожалению, данный проект давно не обновлялся, но, тем не менее, компилятор рабочий. Скачиваем его и устанавливаем на свою рабочую станцию под Linux. После этого компилируем с его помощью какое-нибудь простое консольное приложение типа «Hello world!» и получаем файл с расширением 89z. Это и есть наш исполнимый файл.

Следующим этапом необходимо выгрузить нашу программу на калькулятор. Для этого устанавливаем приложение tilp выполняя «sudo apt install tilp2», подключаем USB кабель и запускаем tilp. Далее выбираем файлы, которые необходимо выгрузить (например нашу программу) и запускаем процесс выгрузки. Как только один или несколько файлов загружено на калькулятор, можно посмотреть их список, нажав 2nd+VAR-LINK. Для того, чтобы запустить загруженную программу, необходимо перейти в калькуляторе в HOME, там, где производятся обычные вычисления и набрать имя программы, а за ним поставить круглые скобки, то есть просто вызвать программу как функцию без аргументов.

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

image

Исходники этой программы можно скачать с моего сайта здесь.

Следует отметить, что, к сожалению, tigcc не умеет хорошо оптимизировать код, поэтому программы получаются не самыми быстрыми. Это можно исправить, если писать на ассемблере, и заодно понять, насколько система команд у Motorola 68000 лучше, чем у x86. Множество примеров программ на ассемблере можно скачать с сайта ticalc.org.

И последнее, но не менее важное. Если у вас нет такого калькулятора — вы все равно можете с ним поиграться. Для этого необходимо установить эмулятор «sudo apt install tiemu», который выглядит и работает в точности, как и его железный собрат:

image