Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Чт мар 28, 2024 17:00

...
Google Search
Forth-FAQ Spy Grafic

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 110 ]  На страницу 1, 2, 3, 4, 5 ... 8  След.
Автор Сообщение
 Заголовок сообщения: FORTH в игре, или Red Power 2 Control для Minecraft.
СообщениеДобавлено: Вс ноя 04, 2012 19:59 
Не в сети

Зарегистрирован: Сб ноя 03, 2012 19:13
Сообщения: 11
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Доброго времени суток, уважаемые Читатели (а возмохно, и Пей^H^Hисатели).

Начну издалека: Вероятно, многие из вас знают про игру под названием Minecraft. К ней постоянно и в больших количествах выпускаются моды, хорошие и не очень. Один из таких модов (весьма годный, надо сказать) - RedPower2

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

Почему эта тема находится здесь, а не на одном из форумов Minecraft-тематики, спросите вы? Все просто: Вышеописанный компьютер программируется на Форте.

Из "железа" имеется процессор с 8кб памяти на борту, до 7 блоков пристраиваемой памяти по 8кб каждая, монитор небольшого разрешения (точнее не скажу, не замерял, уж извините), дисковод для чтения\записи дискет и декодер сигналов ввода\вывода, который работает с проводами RP2-мода - считывает состояние проводов (есть сигнал\нет сигнала) и выводит сигнал на определенный провод\группу проводов. Для работы использует 4 команды: IOX@ - для считывания входящих сигналов, IOX! - для подачи сигнала на определенный провод (все остальные провода сбрасываются на 0), IOXSET - для подачи сигнала на определенный провод без обнуления остальных и IOXRST - для обнуления определенного провода без обнуления остальных же.

Самих проводов 16, различных цветов, их коды в десятичной системе представляют собой 2^n, начиная с нулевой.
Т.е. 1 IOXSET даст сигнал на первый провод (белый), 2 IOXSET - на второй (оранжевый), а 3 IOXSET - на первый и второй сразу.

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

В остальном реализация FORTH в этом моде является упрощенным Сферическим Фортом в Вакууме.

Данная тема предназначена для нубовопросов юных Шахтеростроителей, приобщившихся к RP2, но в жизни до этого не видевших каких бы то ни было ЯП, и, желательно, ответов умудренных жизнью Папок, способных пояснить нубу его неправоту и наставить на Путь Истинный, а также - для всестороннего обсуждения мода, FTGJ.

И первый вопрос задам я сам: Возможно ли силами Форта реализовать многоступенчатую IF-THEN-ELSE-конструкцию? Типа: <code>IF(1)<code>IF(2)<code>THEN(2)<code>ELSE(2)THEN(1).

Допустим, мне нужно проверить три условия: Первые два всегда должны выполняться, а от того, выполнено ли третье, должны зависеть дальнейшие действия программы. Вышеописанная конструкция поможет мне в данном случае, или это делается по другому?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: FORTH в игре, или Red Power 2 Control для Minecraft.
СообщениеДобавлено: Вс ноя 04, 2012 20:22 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
для начала не плохо бы ссылочку на описание или само описание (просто интересно).

Tongor писал(а):
Возможно ли силами Форта реализовать многоступенчатую IF-THEN-ELSE-конструкцию?

таки IF ELSE THEN конструкция.

вложенность сравнений не ограничивается (обычно), так что можно:
Код:
сравнение IF  чего-то-там
                     IF  еще что-то   
                          IF ... ELSE  .. THEN
                      ELSE ...
                     THEN
                 THEN

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: FORTH в игре, или Red Power 2 Control для Minecraft.
СообщениеДобавлено: Вс ноя 04, 2012 20:23 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Ср дек 06, 2006 09:23
Сообщения: 660
Благодарил (а): 7 раз.
Поблагодарили: 25 раз.
насколько я понял проблему с IF-THEN - то она решаема, и примерно в том ключе, как была озвучена в вопросе.

вариант 1:
...
Код:
условие1 IF условие2 IF условие3 IF действие1 ELSE действие2 THEN THEN THEN

...
вариант 2:
...
Код:
условие1 условие2 AND IF условие3 IF действие1 ELSE действие2 THEN THEN

...

слова "условиеХ" оставляют на стеке <Истина> или <Ложь> в зависимости от их выполнения или не выполения


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: FORTH в игре, или Red Power 2 Control для Minecraft.
СообщениеДобавлено: Вс ноя 04, 2012 20:40 
Не в сети
Аватара пользователя

Зарегистрирован: Вт мар 20, 2007 23:39
Сообщения: 1261
Благодарил (а): 3 раз.
Поблагодарили: 19 раз.
О, интересная тема.
Есть полное подробное описание этого форта? В каком виде он подключается к игре? Это отдельная длл-библиотека? Как оно внутри работает? Отдельный симулятор етсь?

_________________
Cтоимость сопровождения программного обеспечения пропорциональна квадрату творческих способностей программиста.
Роберт Д. Блисc


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: FORTH в игре, или Red Power 2 Control для Minecraft.
СообщениеДобавлено: Вс ноя 04, 2012 20:47 
Не в сети
Moderator
Moderator

Зарегистрирован: Ср май 10, 2006 15:37
Сообщения: 1132
Откуда: Chelyabinsk ( Ural)
Благодарил (а): 0 раз.
Поблагодарили: 9 раз.
Например здесь можно посмотреть
RedPower 2 - Рецепты и инструкции (информация по диалекту Форта и примеры)
P.S. Кем и зачем в игре Minecraft "запилен" мод Red Power2 - c моделью Форт компьютера - ХЗ (не интересовался, но информация попадалась)
Возможно это один из вариантов популярной реализаций Форта на "имеющемся" в наличии "програмируемого железа по условиям игры от производителя" для автоматизации
местного строительства Minecraft устройств (зданий или чего то ещё). Симуляторы скорее всего имеются, если подумать, что в разрабатываемом другом
варианте игры 0х10c (подобие Элиты со спектрума), описана конфигурация компьютера управляемого кораблём (что то подобное двум 6502 или всёже DCPU-16 процессорам на 100 КГц могли
бы и получше, исходя из игровой легенды, "железо" заложить:) (а то придётся игрокам ассемблер осваивать) и уже представленного разными разработчиками инструментария, Форт в их числе один из них.
А здесь может жестко дан Форт компьютер. - для игрового компьютерного творчества, кто этому поспособствовал только?
Всем срочно перекфалифициоваться в Minecraft программеров :< :shuffle;и "творить" в виртуальном мире. Полезное дело, учёба с игрой, в общем то наверно задумано.
Монитор-терминал, правда, хиленький судя по информации 80 на 50 знакомест и флоппик 128?2049=262,272 bytes (может без тормозов
реального железа?) CPU порядка 1000 команд/сек? (на тактовой 20КГц)?


Последний раз редактировалось Kopa Пн ноя 05, 2012 03:51, всего редактировалось 34 раз(а).

Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: FORTH в игре, или Red Power 2 Control для Minecraft.
СообщениеДобавлено: Вс ноя 04, 2012 21:04 
Не в сети

Зарегистрирован: Сб ноя 03, 2012 19:13
Сообщения: 11
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Описание всего мода, пожалуй, вот тут наиболее полное. Там же и про Форт. А управляет он таки сигналами на проводах: практически всем, если не всем вообще, машинам в МК, для выполнения действия нужно дать сигнал. Сложные конструкции требуют определенных последовательностей, которые реализуются с помощью километровых логических схем, или соотв. программой, в этом моде. Как-то так.

На правах постскриптума: Если кому интересно - могу залить свою папку Майнкрафта с тестовой комнатой, в которой стоит комп, 16 входов-рычагов и 16 выходов-ламп, для экспериментов =)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: FORTH в игре, или Red Power 2 Control для Minecraft.
СообщениеДобавлено: Вс ноя 04, 2012 21:28 
Не в сети
Moderator
Moderator

Зарегистрирован: Ср май 10, 2006 15:37
Сообщения: 1132
Откуда: Chelyabinsk ( Ural)
Благодарил (а): 0 раз.
Поблагодарили: 9 раз.
Tongor писал(а):
На правах постскриптума: Если кому интересно - могу залить свою папку Майнкрафта с тестовой комнатой, в которой стоит комп, 16 входов-рычагов и 16 выходов-ламп, для экспериментов =)

Лучше наверное, показать Форт код какого то "строительства" или описать трудности в Вашем случае,
наверное около этого направления уже существует своя "экономика"

P.S. Еть ощущение, что Минекрафтофцам c модом RedPower 2 "неимоверно трудно" может быть без Forth-CAD системы автоматизировать свой нелёгкий труд:)
Форт, похоже, вставили в "пику" OLPC, как BIOS
А Фирмы производители комлектующих и оборудования уже поставляют модели своих изделий в MineCraft?


Последний раз редактировалось Kopa Пн ноя 05, 2012 04:35, всего редактировалось 6 раз(а).

Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: FORTH в игре, или Red Power 2 Control для Minecraft.
СообщениеДобавлено: Вс ноя 04, 2012 21:37 
Не в сети

Зарегистрирован: Сб ноя 03, 2012 19:13
Сообщения: 11
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Хорошо. Завтра запилю код. Сейчас время позднее, спать пора.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: FORTH в игре, или Red Power 2 Control для Minecraft.
СообщениеДобавлено: Вс ноя 04, 2012 21:43 
Не в сети
Аватара пользователя

Зарегистрирован: Вт мар 20, 2007 23:39
Сообщения: 1261
Благодарил (а): 3 раз.
Поблагодарили: 19 раз.
Цитата:
Слово: ALLOT
Синтаксис: ( n -- addr )
Описание: Выделяет n байтов памяти и возвращает начало блока addr.
Пример:
Код:
10 CELLS ALLOT
/выделит 10 значений (20 байтов)

ALLOT не должен возвращать адрес.

Цитата:
Слово: RADIX
Тип: V
Синтаксис: ( -- addr )
Описание: Текущая система счисления анализируется и выводится её значение.
Пример:
Код:
RADIX @ . \
/выведет 10 (по умолчанию)
16 RADIX !
/поменяет на шестнадцатеричную систему счисления

А чем BASE плох?

Цитата:
Слово: VOCAB
Тип: V
Синтаксис: ( -- addr )
Описание: Адрес последнего известного слова.

Код:
LAST @


Цитата:
Слово: TIB
Тип: C
Синтаксис: ( -- n )
Описание: Указатель на входной буфер терминала.

( -- addr )

Цитата:
Слово: (HERE)
Тип: V
Синтаксис: ( -- addr )
Описание: Адрес ячейки памяти, где будет хранится новый программный код.

Ага, вот и HERE . Почему в скобках?

Цитата:
Слово: HERE
Синтаксис: ( -- n )
Описание: Ячейка памяти, где будет хранится новый программный код.

Почему ячейка, а не адрес?

Цитата:
Слово: FREE
Синтаксис: ( -- n )
Описание: Вернет количество свободной памяти.

Обычно FREE — это обертка для системного апи освобождения занятой ранее памяти.

Цитата:
Слово: [
Синтаксис: ( -- )
Описание: Переход в режим компиляции.

Переход в режим интерпретации.
Код:
: [ FALSE STATE ! ; IMMEDIATE


Код:
Слово: ]
Синтаксис: ( -- )
Описание: Переход в промежуточный режим.

Переход в режим компиляции.
Код:
: ] TRUE STATE ! ;


Цитата:
Слово: STRLEN
Синтаксис: ( addr -- n )
Описание: Возвращает длину n строкой данного addr. (?)

Цитата:
Слово: RSTRLEN
Синтаксис: ( addr -- n )
Описание: Почти как STRLEN, но действует наоборот.

Ломаное описание: не понятно что делает.

Цитата:
Слово: STRCMP
Синтаксис: ( addr1 addr2 -- n )
Описание: Сравнивает две строки в addr1 и addr2, возвращая 1, если str1 <> str2 или 0, если str1 = str2.

Для строк (au) обычно используется COMPARE ( a1 u1 a2 u2 -- ? ):
    Если две строки идентичны, flag ноль (0).
    Если две строки идентичны до длины наиболее короткой из строк, то flag минус единица (-1), если u1 меньше u2
    Если две строки идентичны до длины наиболее короткой из строк, то flag минус единица (1), если u2 меньше u1
    Если две строки не идентичны до длины наиболее короткой из строк, то flag минус единица (-1), если первый несовпадающий символ строки, заданной addr1 u1 имеет меньшее числовое значение, чем соответствующий символ в строке, заданной addr2 u2, и единица в противном случае.


Вообще, рекомендую вооружиться описанием слов от спф — там все самое необходимое есть.

_________________
Cтоимость сопровождения программного обеспечения пропорциональна квадрату творческих способностей программиста.
Роберт Д. Блисc


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: FORTH в игре, или Red Power 2 Control для Minecraft.
СообщениеДобавлено: Вс ноя 04, 2012 22:11 
Не в сети
Moderator
Moderator

Зарегистрирован: Ср май 10, 2006 15:37
Сообщения: 1132
Откуда: Chelyabinsk ( Ural)
Благодарил (а): 0 раз.
Поблагодарили: 9 раз.
Цитата:
Вообще, рекомендую вооружиться описанием слов от спф — там все самое необходимое есть.


P.S. Есть какие-то росхождения с Форт, заметил TYPE ( adr -- ) выводит данные с заданного адреса? (не так как обычно) что служит ограничителем?
может перевод такой или автор создал свою версию Форт слов?
Порадовало
Код:
Слово: STATE
Тип: V
Синтаксис: ( -- addr )
Описание: Текущее состояние компилятора (0 = промежуточный режим, 1 = режим компиляции).


WORDS Список слов на официальной wiki


Последний раз редактировалось Kopa Пн ноя 05, 2012 03:38, всего редактировалось 3 раз(а).

Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: FORTH в игре, или Red Power 2 Control для Minecraft.
СообщениеДобавлено: Вс ноя 04, 2012 23:50 
Не в сети
Аватара пользователя

Зарегистрирован: Вт мар 20, 2007 23:39
Сообщения: 1261
Благодарил (а): 3 раз.
Поблагодарили: 19 раз.
Kopa писал(а):
Есть какие-то росхождения с Форт, заметил TYPE ( adr -- ) выводит данные с заданного адреса? (не так как обычно) что служит ограничителем?

Ага, есть такие моменты. Похоже оно там все на джаве.

_________________
Cтоимость сопровождения программного обеспечения пропорциональна квадрату творческих способностей программиста.
Роберт Д. Блисc


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: FORTH в игре, или Red Power 2 Control для Minecraft.
СообщениеДобавлено: Пн ноя 05, 2012 00:15 
Не в сети
Moderator
Moderator

Зарегистрирован: Ср май 10, 2006 15:37
Сообщения: 1132
Откуда: Chelyabinsk ( Ural)
Благодарил (а): 0 раз.
Поблагодарили: 9 раз.
VoidVolker писал(а):
Kopa писал(а):
Есть какие-то росхождения с Форт, заметил TYPE ( adr -- ) выводит данные с заданного адреса? (не так как обычно) что служит ограничителем?

Ага, есть такие моменты. Похоже оно там все на джаве.

Может код Balancera JBForth для LA2 использовали? (ан нет эмулировали процессор 6502).
А так, возможно криво сделали, что бы при прочтении книг по Форту первым действием включали мозги и исправляли кривость Форт-системы?
проверяя из консоли работу cлов.
Oficial Red Power wiki

P.S. Наверно полезная ссылочка Unofficial Red Power Control Wiki
Процессор там всё же 6502 (65EL02) и любителям MS-Basic тоже вроде можно инсталировать, но стоит ли оно того?
(возможно кроме повышенного расхода памяти ещё и тормоза), RedForth.img (size 6400) Образ Тетриса тоже прилагается.

Так и до Си недолго, но что останется для скриптов или "дёргать" флоппик (было занятие, при освоении Спектрума писал я на ассемблере Z80 программу которая собирала упоминания английских слов в русских аналогах в "русско-английском" словаре и строила "англо-русский" словарь на дискете - это было нечто, возможно где то ещё пылится "живая" дискетка с кодом данной прораммы.:) C таким направлением,предположу возможное пояление и виртуального ZX-Spectrum в MainCraft (вроде это уже "свободный" девайс)


Последний раз редактировалось Kopa Пн ноя 05, 2012 05:56, всего редактировалось 1 раз.

Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: FORTH в игре, или Red Power 2 Control для Minecraft.
СообщениеДобавлено: Пн ноя 05, 2012 05:00 
VoidVolker писал(а):
Kopa писал(а):
Есть какие-то росхождения с Форт, заметил TYPE ( adr -- ) выводит данные с заданного адреса? (не так как обычно) что служит ограничителем?

Ага, есть такие моменты. Похоже оно там все на джаве.

Может, что-нибудь вроде:
: type ( addr -- ) count type ;
или типа того...


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: FORTH в игре, или Red Power 2 Control для Minecraft.
СообщениеДобавлено: Пн ноя 05, 2012 05:47 
Не в сети
Moderator
Moderator

Зарегистрирован: Ср май 10, 2006 15:37
Сообщения: 1132
Откуда: Chelyabinsk ( Ural)
Благодарил (а): 0 раз.
Поблагодарили: 9 раз.
Zinger писал(а):
VoidVolker писал(а):
Kopa писал(а):
Есть какие-то росхождения с Форт, заметил TYPE ( adr -- ) выводит данные с заданного адреса? (не так как обычно) что служит ограничителем?

Ага, есть такие моменты. Похоже оно там все на джаве.

Может, что-нибудь вроде:
: type ( addr -- ) count type ;
или типа того...

Нет просто выводимая строка, в данном предложенном применении слова TYPE должна оканчиваться числом 0,
что не есть как по стандарту, но и особого напряга не должно возникнуть при учёте этого момента в Форт коде
как данном так и новом, на то он и Форт.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: FORTH в игре, или Red Power 2 Control для Minecraft.
СообщениеДобавлено: Пн ноя 05, 2012 09:48 
Не в сети
Аватара пользователя

Зарегистрирован: Вт мар 20, 2007 23:39
Сообщения: 1261
Благодарил (а): 3 раз.
Поблагодарили: 19 раз.
Для az строк обычно использую PRINT — как в кварке. Вообще, в этом форте куча таких вот нестандартных мест, что затрудняет его использование и подключение стандартных библиотек.

_________________
Cтоимость сопровождения программного обеспечения пропорциональна квадрату творческих способностей программиста.
Роберт Д. Блисc


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 110 ]  На страницу 1, 2, 3, 4, 5 ... 8  След.

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7


Вы не можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
phpBB сборка от FladeX // Русская поддержка phpBB