Если вы хотите собрать ретро-компьютер на основе популярного микроконтроллера, например, микроконтроллера ATmega компании AVR, с давно устаревшим языком программирования, то проект MicroLisp будет самым подходящим решением.

Такой компьютер можно собрать на основе ATmega328, миниатюрного OLED-дисплея (8 строк, 21 символ в строке) и нескольких дополнительных компонентов, вроде резонатора, светодиода, резисторов и конденсаторов. К этому компьютеру также можно подключать клавиатуру PS/2.
Ниже показана схема устройства:

MicroLips (или uLips) по своей сути представляет собой интерпретатор языка Lips, написанный в Arduino IDE, поэтому он в первую очередь предназначен для плат Arduino и микроконтроллеров AVR, которые используются в большинстве этих плат. Поскольку это интерпретатор, то вы можете вводить команды и сразу наблюдать результат их выполнения без необходимости компилирования и загрузки вашей программы. Скачать MicroLips можно здесь.
Это позволяет без проблем управлять цифровыми и аналоговыми линиями ввода/вывода, а также работать с интерфейсами I2C и SPI. Также можно сохранять написанные программы в энергонезависимую память EEPROM, благодаря чему после выключения питания они останутся в микроконтроллере и после подачи питания вновь могут начать работу, если так было настроено.
Если вы не знакомы с языком Lisp, то можете воспринимать его как язык сценариев с последовательным синтаксисом. Здесь все записывается в виде списка элементов в скобках. Например, команда для включения светодиода на линии 13 будет выглядеть следующим образом:
(digitalwrite 13 t)
Здесь t означает «true», то есть «включено» в данном контексте. Команда в Lisp всегда записывается первой. Например, чтобы сложить два числа, нужно будет написать:
(+ 25 51)
При этом команда, которая всегда записывается первой, распространяется на все остальные элементы в текущей строке. Например, так можно сложить пять чисел:
(+ 15 89 76 53 77)
Теперь покажем, как мигать светодиодом, подключенным к выводу 13, с помощью программы на языке MicroLisp. Просто напишите следующую строку:
(defun b (x) (pinmode 13 t) (digitalwrite 13 x) (delay 500) (b (not x)))
Чтобы запустить программу, введите:
(b nil)
Чтобы остановить выполнение программы, просто нажмите на Esc.
MicroLisp, конено же, не будет уже популярным языком, но это отличная среда для изучения языков программирования в целом и создания простейших электронных устройств на базе плат Arduino и микроконтроллеров AVR.
© digitrode.ru