Не так давно на Хабре была статья про графический калькулятор TI-83, и, поскольку я являюсь обладателем TI-89 Titanium — калькулятором следующего поколения от Texas Instruments, под катом я решил рассказать про него, и показать, как для этого калькулятора можно создавать свои собственные программы на С.
В отличие от TI-83, в основе которого лежит 8-ми разрядный микропроцессор z80, TI-89 Titanium создан с использованием 32-х разрядного Motorola 68000:
![image](https://ic.pics.livejournal.com/andyplekhanov/66030250/60686/60686_900.jpg)
Кроме этого, TI-89 Titanium обладает рядом других улучшений. Здесь я приведу его краткие характеристики:
Процессор — 12 MHz MC68000, экран — монохромный, 160x100 пикселей, 256K RAM (188K доступно пользователю), 4M Flash ROM (примерно 2.7M доступно для пользователя), Standard I/O (никогда не пользовался), USB Mini Port (используется для обмена информацией с обычным компьютером):
![image](https://ic.pics.livejournal.com/andyplekhanov/66030250/60961/60961_900.jpg)
Питается он от четырех батареек AAA (надо сказать, что потребляет достаточно много, так что при интенсивном использовании батарейки приходится менять достаточно часто). Имеется также дополнительная батарейка, сохраняющая настройки при замене основных батареек:
![image](https://ic.pics.livejournal.com/andyplekhanov/66030250/61934/61934_900.jpg)
Существует множество ресурсов в интернете, посвященных калькуляторам TI и, в частности, TI-89 Titanium. В качестве примера можно привести www.ticalc.org. На этом ресурсе можно найти огромное количество различных описаний, программ и исходников для этого и других калькуляторов TI, например, игрушек.
На самом деле, этот калькулятор предназначен для математических расчетов, и содержит в себе CAS (computer algebra system), которая позволяет производить не только численные расчеты, но и расчеты в символьной форме:
![image](https://ic.pics.livejournal.com/andyplekhanov/66030250/62189/62189_900.jpg)
Но нас интересует, как создавать свои собственные программы на С. Для этого существует компилятор tigcc (http://tigcc.ticalc.org) созданный на основе gcc. К сожалению, данный проект давно не обновлялся, но, тем не менее, компилятор рабочий. Скачиваем его и устанавливаем на свою рабочую станцию под Linux. После этого компилируем с его помощью какое-нибудь простое консольное приложение типа «Hello world!» и получаем файл с расширением 89z. Это и есть наш исполнимый файл.
Следующим этапом необходимо выгрузить нашу программу на калькулятор. Для этого устанавливаем приложение tilp выполняя «sudo apt install tilp2», подключаем USB кабель и запускаем tilp. Далее выбираем файлы, которые необходимо выгрузить (например нашу программу) и запускаем процесс выгрузки. Как только один или несколько файлов загружено на калькулятор, можно посмотреть их список, нажав 2nd+VAR-LINK. Для того, чтобы запустить загруженную программу, необходимо перейти в калькуляторе в HOME, там, где производятся обычные вычисления и набрать имя программы, а за ним поставить круглые скобки, то есть просто вызвать программу как функцию без аргументов.
Обычные консольные программы не так интересны, поэтому существуют функции для отрисовки различных примитивов на экране, чтения ввода с клавиш и т.д. В качестве одного из интерактивных приложений я адаптировал свою программу для игры в реверси. Выглядит это вот так:
![image](https://ic.pics.livejournal.com/andyplekhanov/66030250/62403/62403_900.jpg)
Исходники этой программы можно скачать с моего сайта здесь.
Следует отметить, что, к сожалению, tigcc не умеет хорошо оптимизировать код, поэтому программы получаются не самыми быстрыми. Это можно исправить, если писать на ассемблере, и заодно понять, насколько система команд у Motorola 68000 лучше, чем у x86. Множество примеров программ на ассемблере можно скачать с сайта ticalc.org.
И последнее, но не менее важное. Если у вас нет такого калькулятора — вы все равно можете с ним поиграться. Для этого необходимо установить эмулятор «sudo apt install tiemu», который выглядит и работает в точности, как и его железный собрат:
![image](https://ic.pics.livejournal.com/andyplekhanov/66030250/62717/62717_900.jpg)
В отличие от TI-83, в основе которого лежит 8-ми разрядный микропроцессор z80, TI-89 Titanium создан с использованием 32-х разрядного Motorola 68000:
![image](https://ic.pics.livejournal.com/andyplekhanov/66030250/60686/60686_900.jpg)
Кроме этого, TI-89 Titanium обладает рядом других улучшений. Здесь я приведу его краткие характеристики:
Процессор — 12 MHz MC68000, экран — монохромный, 160x100 пикселей, 256K RAM (188K доступно пользователю), 4M Flash ROM (примерно 2.7M доступно для пользователя), Standard I/O (никогда не пользовался), USB Mini Port (используется для обмена информацией с обычным компьютером):
![image](https://ic.pics.livejournal.com/andyplekhanov/66030250/60961/60961_900.jpg)
Питается он от четырех батареек AAA (надо сказать, что потребляет достаточно много, так что при интенсивном использовании батарейки приходится менять достаточно часто). Имеется также дополнительная батарейка, сохраняющая настройки при замене основных батареек:
![image](https://ic.pics.livejournal.com/andyplekhanov/66030250/61934/61934_900.jpg)
Существует множество ресурсов в интернете, посвященных калькуляторам TI и, в частности, TI-89 Titanium. В качестве примера можно привести www.ticalc.org. На этом ресурсе можно найти огромное количество различных описаний, программ и исходников для этого и других калькуляторов TI, например, игрушек.
На самом деле, этот калькулятор предназначен для математических расчетов, и содержит в себе CAS (computer algebra system), которая позволяет производить не только численные расчеты, но и расчеты в символьной форме:
![image](https://ic.pics.livejournal.com/andyplekhanov/66030250/62189/62189_900.jpg)
Но нас интересует, как создавать свои собственные программы на С. Для этого существует компилятор tigcc (http://tigcc.ticalc.org) созданный на основе gcc. К сожалению, данный проект давно не обновлялся, но, тем не менее, компилятор рабочий. Скачиваем его и устанавливаем на свою рабочую станцию под Linux. После этого компилируем с его помощью какое-нибудь простое консольное приложение типа «Hello world!» и получаем файл с расширением 89z. Это и есть наш исполнимый файл.
Следующим этапом необходимо выгрузить нашу программу на калькулятор. Для этого устанавливаем приложение tilp выполняя «sudo apt install tilp2», подключаем USB кабель и запускаем tilp. Далее выбираем файлы, которые необходимо выгрузить (например нашу программу) и запускаем процесс выгрузки. Как только один или несколько файлов загружено на калькулятор, можно посмотреть их список, нажав 2nd+VAR-LINK. Для того, чтобы запустить загруженную программу, необходимо перейти в калькуляторе в HOME, там, где производятся обычные вычисления и набрать имя программы, а за ним поставить круглые скобки, то есть просто вызвать программу как функцию без аргументов.
Обычные консольные программы не так интересны, поэтому существуют функции для отрисовки различных примитивов на экране, чтения ввода с клавиш и т.д. В качестве одного из интерактивных приложений я адаптировал свою программу для игры в реверси. Выглядит это вот так:
![image](https://ic.pics.livejournal.com/andyplekhanov/66030250/62403/62403_900.jpg)
Исходники этой программы можно скачать с моего сайта здесь.
Следует отметить, что, к сожалению, tigcc не умеет хорошо оптимизировать код, поэтому программы получаются не самыми быстрыми. Это можно исправить, если писать на ассемблере, и заодно понять, насколько система команд у Motorola 68000 лучше, чем у x86. Множество примеров программ на ассемблере можно скачать с сайта ticalc.org.
И последнее, но не менее важное. Если у вас нет такого калькулятора — вы все равно можете с ним поиграться. Для этого необходимо установить эмулятор «sudo apt install tiemu», который выглядит и работает в точности, как и его железный собрат:
![image](https://ic.pics.livejournal.com/andyplekhanov/66030250/62717/62717_900.jpg)