nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 28 Mar 2024 11:36



Reply to topic  [ 12 posts ] 
Brainf*ck в железе 

Стоит ли заморачиваться?
Да 50%  50%  [ 3 ]
Нет 50%  50%  [ 3 ]
Total votes : 6

Brainf*ck в железе 
Author Message
Junior

Joined: 26 Jul 2011 00:45
Posts: 5
Location: 109.106.155.21
Reply with quote
Извините если ошибся разделом, но более подходящего форума для этой идеи не нашел.
Идея вертится в голове очень давно, но вечно то одно, то другое отвлекает от ее реализации. Может, кого-нибудь заинтересует и он возьмется за изготовление девайса))

В общем, предлагаю затею - Brainfuck в железе.

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

Предлагаемая мной задумка подошла бы для выставки ретро-машин, из серии "как если бы ее изготовили во времена Тьюринга".

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

Суть конструкции:
1) Лента программы - перфолента с 9 рядами для дырок(8 рядов - команды, 9-я - несущая для определения положения на ленте)
2)считыватель - электромеханический, с контактными язычками(либо оптопарами, но это мажорство)) ) для определения какая команда в данный момент на ленте.
3) ячейка памяти - колесо, кромка которого разделена на 256 секций с наклеенными на них изображениями из кодовой страницы символов.
4)блок памяти - это множество таких колес, нанизанных на общую ось. колеса спрятаны под кожухом, а на лицевой стороне окошко - в него колеса выглядывают одним символом(соответствующим "числу", находящемуся в этот момент в "памяти")
5)каждое колесо оборудовано контактной группой, которая замыкается в нулевом положении колеса, для определения этого положения.
6)головка-указатель, передвигающаяся по рельсам вдоль блока памяти по командам ">" и "<". на головке установлен прижимной ролик, который может проворачивать колеса памяти по командам "+" и "-"
7)встречая команду "," выполнение программы прерывается, на головке загорается лампочка, указывающая что в ячейку нужно ввести данные(повернуть колесо рукой), после чего нажать кнопку, сдвигающую ленту программы вперед и тем самым продолжающую выполнение.
8)встречая команду ".", выполнение так же прерывается и загорается другая лампочка, с целью показать человеку содержимое ячейки. выполнение продолжается той же кнопкой.
9)встречая команду "[", и обнаружив замыкание контактов 0 положения текущего колеса(ответный контактный язычок можно расположить на головке, а все колеса запитать общим через ось) - считыватель (2) начинает прокручивать программу вперед, игнорируя команды, до соответствующего "]". соответствующая "]" ищется при помощи счетчика - отдельного колеса с контактными язычками для нулевого положения. встречая "[" - колесо проворачивается в одну сторону(увеличивая содержимое счетчика), а "]" - в обратную, до тех пор пока язычки снова не сомкнутся.
10)встречая команду "]" и ненулевое положение текущего колеса, считыватель начинает отлистывать программу в обратном направлении до соответствующей скобки, ища ее описанным выше способом.

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

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


26 Jul 2011 01:12
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
LesnikSBR wrote:
Извините если ошибся разделом, но более подходящего форума для этой идеи не нашел.
Идея вертится в голове очень давно, но вечно то одно, то другое отвлекает от ее реализации. Может, кого-нибудь заинтересует и он возьмется за изготовление девайса))

В общем, предлагаю затею - Brainfuck в железе.

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

Предлагаемая мной задумка подошла бы для выставки ретро-машин, из серии "как если бы ее изготовили во времена Тьюринга".

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

Суть конструкции:
1) Лента программы - перфолента с 9 рядами для дырок(8 рядов - команды, 9-я - несущая для определения положения на ленте)
2)считыватель - электромеханический, с контактными язычками(либо оптопарами, но это мажорство)) ) для определения какая команда в данный момент на ленте.
3) ячейка памяти - колесо, кромка которого разделена на 256 секций с наклеенными на них изображениями из кодовой страницы символов.
4)блок памяти - это множество таких колес, нанизанных на общую ось. колеса спрятаны под кожухом, а на лицевой стороне окошко - в него колеса выглядывают одним символом(соответствующим "числу", находящемуся в этот момент в "памяти")
5)каждое колесо оборудовано контактной группой, которая замыкается в нулевом положении колеса, для определения этого положения.
6)головка-указатель, передвигающаяся по рельсам вдоль блока памяти по командам ">" и "<". на головке установлен прижимной ролик, который может проворачивать колеса памяти по командам "+" и "-"
7)встречая команду "," выполнение программы прерывается, на головке загорается лампочка, указывающая что в ячейку нужно ввести данные(повернуть колесо рукой), после чего нажать кнопку, сдвигающую ленту программы вперед и тем самым продолжающую выполнение.
8)встречая команду ".", выполнение так же прерывается и загорается другая лампочка, с целью показать человеку содержимое ячейки. выполнение продолжается той же кнопкой.
9)встречая команду "[", и обнаружив замыкание контактов 0 положения текущего колеса(ответный контактный язычок можно расположить на головке, а все колеса запитать общим через ось) - считыватель (2) начинает прокручивать программу вперед, игнорируя команды, до соответствующего "]". соответствующая "]" ищется при помощи счетчика - отдельного колеса с контактными язычками для нулевого положения. встречая "[" - колесо проворачивается в одну сторону(увеличивая содержимое счетчика), а "]" - в обратную, до тех пор пока язычки снова не сомкнутся.
10)встречая команду "]" и ненулевое положение текущего колеса, считыватель начинает отлистывать программу в обратном направлении до соответствующей скобки, ища ее описанным выше способом.

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

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

Эээээ... Brainfuck это... хм... если я правильно понимаю английский - "профакать" себе мозг? :wink:
Вобщем-то мы тужимся тут родить простой, но эффективный процессор сугубо на мелкой логике, что оказалось не так уж и просто и мне лично зело уже Brain проf@ckало...
Но воплощать частный случай машины Тьюринга на рэле и перфолентах... - так заf@ckать себе Brain мне даже как-то в голову не приходило!!! :o

Нет - есть конечно в сети герои и с такими подвигами (и ссылки есть на них), но лично я бы на такой Brainfuck не отважился... :(
Чем-то мне это всё зело напоминает машину Бэббиджа...


26 Jul 2011 01:32
Profile
Junior

Joined: 26 Jul 2011 00:45
Posts: 5
Location: 109.106.155.21
Reply with quote
Post 
Brainf*ck эт язык такой - http://ru.wikipedia.org/wiki/Brainfuck

:rotate:


26 Jul 2011 01:47
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
LesnikSBR wrote:
Brainf*ck эт язык такой - http://ru.wikipedia.org/wiki/Brainfuck :rotate:

Мне казалось, я задал вопрос про перевод, а не про язык...
Но судя по тому как на "язык" реагирует "спеллчекер" форума - моя догадка не далека от истины. :wink:


26 Jul 2011 02:02
Profile
Banned
User avatar

Joined: 20 Mar 2005 13:41
Posts: 2141
Location: От туда
Reply with quote
Post 
Процессор с нативным восприятием БФ вполне реально сделать как RISC. Но лично мне не настолько интересно, чтобы сесть за паяльник.


26 Jul 2011 02:14
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
HardWareMan wrote:
Процессор с нативным восприятием БФ вполне реально сделать как RISC. Но лично мне не настолько интересно, чтобы сесть за паяльник.

Наш прототип 4-BIT процессора сейчас выполняет сугубо похожую систему команд.


http://www.nedopc.org/forum/posting.php?mode=editpost&p=90158
Я ещё когда моделировал его пришел к выводу, что в принципе работать на нём можно, но программировать зело противно...
Quote:
Программы на языке Brainfuck писать сложно, за что его иногда называют языком для мазохистов. Но при этом важно отметить, что Brainfuck является вполне естественным, полным и простым языком.
Но несмотря на внешнюю примитивность, Brainfuck с бесконечным набором ячеек имеет тьюринговскую полноту, а, следовательно, по потенциальным возможностям не уступает «настоящим» языкам, подобным Си, Паскалю или Java.


26 Jul 2011 02:27
Profile
Junior

Joined: 26 Jul 2011 00:45
Posts: 5
Location: 109.106.155.21
Reply with quote
Post 
risc без прямой адресации памяти? имхо это занижение возможностей архитектуры, возможностей имеющихся микросхем.

учитывая что программа не модифицируется в процессе исполнения, и не нужны указатели на инструкцию(любой счетчик указателя является ограничением, т.к. длина программы максимум равна максимальному значению этого счетчика) перфорированная лента - оптимальный вариант т.к. в теории ее можно сделать любой длины.
то же самое относится и к памяти - ее будет ровно столько, сколько установлено колес, т.е. нет ограничения


26 Jul 2011 02:54
Profile
Banned
User avatar

Joined: 20 Mar 2005 13:41
Posts: 2141
Location: От туда
Reply with quote
Post 
LesnikSBR wrote:
risc без прямой адресации памяти? имхо это занижение возможностей архитектуры, возможностей имеющихся микросхем.

Кто сказал, что без?


26 Jul 2011 03:11
Profile
Junior

Joined: 26 Jul 2011 00:45
Posts: 5
Location: 109.106.155.21
Reply with quote
Post 
HardWareMan wrote:
LesnikSBR wrote:
risc без прямой адресации памяти? имхо это занижение возможностей архитектуры, возможностей имеющихся микросхем.

Кто сказал, что без?

спецификация языка BrainF*ck


26 Jul 2011 04:45
Profile
Junior

Joined: 26 Jul 2011 00:45
Posts: 5
Location: 109.106.155.21
Reply with quote
Post 
правда шкафчик такой "комнатный" получится.. для того чтобы высота символа была в сантиметр, колёсико должно быть почти метр в диаметре))))

Lavr, верно, я к этой задумке отношусь с юмором, и если когда-нибудь соберу(врядли до пенсии), то чисто поржать ;)

off: вот что меня действительно заинтересовало, так это ядро z80 в PICе...


26 Jul 2011 06:06
Profile
Senior

Joined: 07 Aug 2006 10:18
Posts: 185
Reply with quote
Post 
Quote:
Стоит ли заморачиваться?

Ну как тебе сказать. Если для собственного удовольствия -- то конечно же стоит. Если же для чего-то большего, то максимум чего можно достичь -- это много-много просмотров в youtube. ;)


26 Jul 2011 11:07
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
Да нет... если всё это сделать, и колёса крутить не рукой, может получиться симпатичная вещь в стим-панк стиле...

Image

Стиль мне нравится, но вот делать всё это точно как написано, можно правда ближе к пеньсии - механики многовато... :wink:


26 Jul 2011 15:30
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 12 posts ] 

Who is online

Users browsing this forum: No registered users and 15 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.