Pull to refresh

Brainfuck-компьютер

Reading time3 min
Views6K
Original author: Robert Östling.
Возможно многие из вас слышали о Brainfuck'e-эзотерическом языке программирования, либо средстве для понтов. Но тут у каждого своё мнение. Ниже я хочу привести перевод одного энтузиаста, создавшего компьютер, работающий на основе Brainfuck.

Компьютер Brainfuck



Новости

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

Суть


Похоже, что код, который я разместил здесь не работает, и я потерял исходный код. Теперь я переписал код ПЗУ, и она отлично работает. В перспективе это было глупо не использовать внутренние подтягивающие резисторы в PIC, а не те, 10-килоомные резисторы, которые я использую сейчас. Это, вероятно, снизит энергопотребление светодиодов очень мало, может быть, всего на несколько микроампер.

Ни один из программных проектов, над которыми я работаю нельзя считать полезным, но этот играет особенную роль… Я построил компьютер на микроконтроллере PIC16F84A, используя 8-контактный DIP-переключатель (имеет четыре пары пинов) и 8 3-милиметровых красных светодиодов. Скорость? Я использую 32.768kHz часовой кристалл — и так как PIC требуется около 4 циклов для каждой команды, все это работает на 8192 инструкций в секунду. Теперь, вот лучшая часть. Единственной программой является простой «редактор» и интерпретатор Brainfuck! Это довольно неэффективно, в связи с простотой архитектуры PIC, так что вы могли бы ожидать, может быть, 100-500 операций в секунду от нее. Он имеет 68 байт оперативной памяти, из которых 32 могут быть использованы пользователем программ. Программы хранятся в энергонезависимой памяти PIC (64 байта), который позволяет запускать программы до 128 инструкций (2 3-разрядные инструкции и 2 пустых бита на байт).

Самой большой и сложной программой, когда-либо написанной для этого фантастического компьютера является:

,>,[<+>-]<.

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

Кстати, тот, кто может догадаться, что эта программа на самом деле делает получает нехилый опыт! (Подсказка: она будет просить ввести и сложить два числа, а затем выводит результат).
image

Необходимые компоненты.


Компонент: Характеристика.
В1-В4: DIP-переключатель.
C1-C2: Конденсаторы;100 пФ; керамический.
D1-D8: 3-милиметровые красные светодиоды.
R1-R9: Резисторы;1k.
R10-R13: Резисторы.;10k.
U1: Микроконтроллер PIC16F84A.
X1: 32.786kHz кристалл.

Итог всего вышесказанного.


Лучшее этом проекте то, что вы можете получить все детали за два или три долларов США (конечно, если вы живёте в США, но в принципе, найти эти детали не составит труда найти в любой стране). К тому же, Microchip посылает вам бесплатно PIC, иначе говоря, экономит вам некоторую сумму денег.

Связанные файлы


Исходный код (с документацией)
Изображение компьютера

От меня:

От меня тут были добавлены некоторые пояснения, комментарии и ссылки, отсутствующие в оригинале. Попрошу о всех неточностях, либо ошибках сообщать в ЛС. Буду благодарен за аргументированные комментарии и ваши мнения, касательно этого проекта.
Tags:
Hubs:
-8
Comments13

Articles

Change theme settings