Перейти к содержимому


Фотография

[1.4.6] RedPower 2 [Prerelease 6]


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 2372

#1241 Andy_kl

Andy_kl

    Добытчик дерева

  • Пользователи
  • Сообщений: 184

Написал 13.12.2012 - 21:43

Слоупок наверно тоже любит пошутить
Перевод RailCraft

Posted Image

#1242 _random

_random

    Добытчик дерева

  • Пользователи
  • Сообщений: 151

Написал 15.12.2012 - 19:41

Реализовал некоторые операции над 32-разрядными числами. На ассемблере: D+ ( d1 d2 -- d) – сложение. S>D ( n -- d) – преобразование из 16-разрядного в 32-разрядное. DNEGATE ( d1 -- d) – изменение знака. 2@ ( addr -- d). 2! ( d addr -- ). На форте: 2CONSTANT 2VARIABLE D- ( d1 d2 -- d ) – вычитание. D0< ( d -- f ) – f = TRUE если d < 0. D= ( d1 d2 -- f ) – f = TRUE если d1 = d2. DUM/MOD ( n1L n1H n2 -- nR nL nH) – то же что и UM/MOD, но частное 32-разрядное. DUITOA ( d -- addr ) – то же что и UITOA, но работает с 32-разрядными числами. D. ( d -- ) – то же что и . но работает с 32-разрядными числами. Вроде все работает, но ошибки, конечно, могут быть. Исходный текст:
Скрытый текст
Ввода 32-разрядных чисел не сделал, мне это пока не нужно. Надо будет посмотреть, как сделан ввод 32-разрядных чисел в других реализациях форта. 32-разрядные числа редко когда нужны в майнкрафте, но может кому-нибудь понадобятся.

Прикрепленные файлы

  • Прикрепленный файл  forth_dp.zip   3.95К   Количество загрузок: 226


#1243 HitriyLis

HitriyLis

    Добытчик алмазов

  • Пользователи
  • Сообщений: 598
  • Откуда: Север!

Написал 15.12.2012 - 19:48

Можешь ассемблерные слова переделать в виде байт-кода? Это для того, чтобы можно было набрать с помощью
Прошу называть меня Хитрый Лис или просто, Лис.

У тех, кто пишет понятно, есть читатели; у тех, кто пишет туманно, есть комментаторы.
--Альберт Камю

#1244 _random

_random

    Добытчик дерева

  • Пользователи
  • Сообщений: 151

Написал 15.12.2012 - 21:28

Сделал.
Скрытый текст

Поторопился ты, надо было сначала получше проверить. Еще надо сделать ввод 32-разрядных чисел, но это как-нибудь потом.
И еще: в слове 2@ строка !word - без предыдущего кода не имеет смысла. Надо писать как-то так: !word <адрес предыдущего слова>

#1245 HitriyLis

HitriyLis

    Добытчик алмазов

  • Пользователи
  • Сообщений: 598
  • Откуда: Север!

Написал 15.12.2012 - 21:43

Поторопился ты...

Бывает.

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

А S>D не достаточно?

И еще: в слове 2@ строка !word - без предыдущего кода не имеет смысла. Надо писать как-то так: !word <адрес предыдущего слова>

Поправлю.

По поводу других реализаций:
Мне дали UITOA (на всякий):
: UITOA ( n --> str )SCRATCH 14 +0 OVER C!BEGIN  1- SWAP 0 RADIX @  UM/MOD -ROT 30 +  DUP 39 >  IF 7 + THEN  OVER C! OVER 0=UNTILNIP;

Прошу называть меня Хитрый Лис или просто, Лис.

У тех, кто пишет понятно, есть читатели; у тех, кто пишет туманно, есть комментаторы.
--Альберт Камю

#1246 _random

_random

    Добытчик дерева

  • Пользователи
  • Сообщений: 151

Написал 15.12.2012 - 22:29

Точно поторопился. Я ведь не смотрел исходник UITOA, смотрел только внешние признаки его работы. Надо так:
: DUITOA0 84 !RADIX @ DUM/MODROT 48 + 83 C!83 85 !BEGIN	2DUP 0 0 D= INVERTWHILE	85 C@ 1- 85 C!	RADIX @ DUM/MOD	ROT 48 + 85 C@ C!REPEAT2DROP85 C@;
В DUITOA я делю исходное число на RADIX, записываю остаток в качестве 1-ого разряда, потом делю частное, записываю остаток в качестве 2-ого разряда и т.д. 85-ый байт хранит адрес по которому записывается текущий разряд. UITOA похоже работает аналогично, но что там делается в стеке я не могу сходу понять. Да, еще это будет работать только в десятеричной системе, забыл таблицу кодировок посмотреть.

#1247 HitriyLis

HitriyLis

    Добытчик алмазов

  • Пользователи
  • Сообщений: 598
  • Откуда: Север!

Написал 15.12.2012 - 22:42

В начале цикла на вершине хранится адрес последнего изменённого символа. Под ним целое после делений. В цикле число делится на основание и целое перекидывается на 3-ю позицию. Символ переводится и записывается на нужную позицию. Насчёт перевода: Вставь DUP 57 > IF 7 + THEN Иначе будут проблемы при выводе под HEX Кстати, конец буфера SCRATCH вычисляется так: TIB 1- Забыл пометить: я привёл код под HEX-ом. UPD: Проверь вот это:
DECIMAL: DUITOA ( n --> str )0 99 !99 100 !BEGIN  1 100 -!        ( d )  RADIX @ DUM/MOD ( n d )  ROT 48 +        ( d n )  DUP 57 >  IF 7 + THEN  100 @ C!        ( d )  2DUP 0 0 D=UNTIL2DROP100 @;

Прошу называть меня Хитрый Лис или просто, Лис.

У тех, кто пишет понятно, есть читатели; у тех, кто пишет туманно, есть комментаторы.
--Альберт Камю

#1248 _random

_random

    Добытчик дерева

  • Пользователи
  • Сообщений: 151

Написал 16.12.2012 - 10:08

Сделал так:
DECIMAL\ n1L n1H -- addr: DUITOA0 100 !100-ROTBEGIN	ROT	1- -ROT	RADIX @ DUM/MOD	2SWAP	48 +	DUP 57 > IF 7 + THEN	OVER	C!	-ROT	2DUP 0 0 D=UNTIL2DROP;
Получилось короче твоего варианта на 16 байт.
Еще вместо 0 0 можно писать 0 DUP, будет короче на 2 байта, но код будет менее понятным.

#1249 Eugenio

Eugenio

    Добытчик угля

  • Пользователи
  • Сообщений: 301
  • Откуда: Самара

Написал 16.12.2012 - 13:28

Киньте кто нибудь 5b2, у меня только 5b1. Архив мода же можно распространять, это ж не майнкрафт.джар?
Мой генератор ачив умер. Хнык хнык хнык :(
Зовите меня Женуарий, Евгенио, Женевьев или просто Женя.
Пора завязывать со срачем!!!
Скрытый текст

Цитатник: одна цитата и Няша-Зодиаша!!!
Скрытый текст

#1250 HitriyLis

HitriyLis

    Добытчик алмазов

  • Пользователи
  • Сообщений: 598
  • Откуда: Север!

Написал 16.12.2012 - 14:00

Еще вместо 0 0 можно писать 0 DUP, будет короче на 2 байта, но код будет менее понятным.

Можно вообще нули заменить на FALSE =)
Прошу называть меня Хитрый Лис или просто, Лис.

У тех, кто пишет понятно, есть читатели; у тех, кто пишет туманно, есть комментаторы.
--Альберт Камю

#1251 parsh

parsh

    Странник

  • Пользователи
  • Сообщений: 17

Написал 16.12.2012 - 14:41

всем привет.народ, подскажите как правильно прописать программу для двери (организовать цикл)?в двух словах описание: есть поршневая дверь. у меня для её открывания написано две команды- ON и ОFF.перед дверью и за дверью стоит плита, подключённая к чёрному проводу.хотелось бы ,чтобы вся система работала так - крутится вечный цикл , нажал на плиту( есть сигнал на чёрном проводе), запуск команды ON, пауза в 6 секунд, запуск команды OFF, продолжение вечного цикла.что сообразил по кускам - ожидание только чёрного сигнала:: WAITBEGIN 5 TICKS 15 IOX@ =UNTIL ;после получения чёрного открыть дверь, подождать, закрыть дверь:: ON_OFFON120 TICKSOFF ;вечный цикл -?ц: CIKLBEGINWAITON_OFFAGAIN ; собрал в кучу, но не работает :( хелп...

#1252 HitriyLis

HitriyLis

    Добытчик алмазов

  • Пользователи
  • Сообщений: 598
  • Откуда: Север!

Написал 16.12.2012 - 14:55

Прелесть форта в том, что подпрограммы можно тестить сразу как их написал. В твоём случае неправильно работает WAIT. Вместо чёрного сигнала он ждёт одновременный сигнал с 4-х первых цветов.
HEX: WAITBEGIN 5 TICKS 8000 IOX@ ANDUNTIL ;DECIMAL
Если дверь может открываться от одного сигнала, то буть проще и переходи на аналог =) В смысле используй State Cell.
Прошу называть меня Хитрый Лис или просто, Лис.

У тех, кто пишет понятно, есть читатели; у тех, кто пишет туманно, есть комментаторы.
--Альберт Камю

#1253 parsh

parsh

    Странник

  • Пользователи
  • Сообщений: 17

Написал 16.12.2012 - 21:35

не, от одного сигнала не откроется. там 4 цвета используется для открытия всех поршней: белый,оранж,маджента, лайтблу. в закрытом состоянии на всех этих цветах есть сигнал. добавляется чёрный - нужно открывать. пошёл тестить новый код) Лис сенкс) UP: СУПЕР!!! всё пашет как часы)) а если не переводить в hex, то прописывать нужно было значение не 8000 а 32768? игрался с вариантами использования шлюзовой дверки. возник вопрос - как отследить ИСЧЕЗНОВЕНИЕ сигнала с черного провода? для чего нужно, сейчас объясню. есть комната с открытой дверью. на полу комнаты плиты, включающие чёрный провод. http://clip2net.com/s/2BZOD как только тело станет на плиту, дверь должна закрыться, и оставаться закрытой до тех пор, пока сигнал чёрного провода не исчезнет( пока не отпустит плиту). http://clip2net.com/s/2BZT2 алгоритм как оно по логике должно работать: начало вечного цикла проверка"наличие сигнала от чёрного провода" сигнал есть - выполнить OFF(закрыть дверь) начало цикл2 проверка "есть сигнал от чёрного провода" сигнал есть - в начало цикла 2 сигнала нет - выполнить ON(открыть дверь), выйти из цикла 2 конец цикла 2 конец вечного цикла

#1254 HitriyLis

HitriyLis

    Добытчик алмазов

  • Пользователи
  • Сообщений: 598
  • Откуда: Север!

Написал 16.12.2012 - 21:48

а если не переводить в hex, то прописывать нужно было значение не 8000 а 32768?

Да. Мне просто проще работать с битами через HEX (угадай почему)

возник вопрос - как отследить ИСЧЕЗНОВЕНИЕ сигнала с черного провода?

Также как ты следил за его включением, только ставишь отрицание. Т.е:
: WAITOFFBEGIN  5 TICKS  32768 IOX@  AND 0=UNTIL ;

Прошу называть меня Хитрый Лис или просто, Лис.

У тех, кто пишет понятно, есть читатели; у тех, кто пишет туманно, есть комментаторы.
--Альберт Камю

#1255 Eugenio

Eugenio

    Добытчик угля

  • Пользователи
  • Сообщений: 301
  • Откуда: Самара

Написал 17.12.2012 - 16:41

Высокоуважаемый ВикР, не изволите ли вы написать, что в индастриэлском экстракторе каучуковую древесину можно выжать в резину, а также про крафт резного каменного кирпича: [dungeon-brick] [dungeon-brick] [dungeon-brick] [dungeon-brick] . Всё-таки перевод огнеупорный.
Мой генератор ачив умер. Хнык хнык хнык :(
Зовите меня Женуарий, Евгенио, Женевьев или просто Женя.
Пора завязывать со срачем!!!
Скрытый текст

Цитатник: одна цитата и Няша-Зодиаша!!!
Скрытый текст

#1256 PheoniX

PheoniX

    Странник

  • Пользователи
  • Сообщений: 4
  • Откуда: Харьков

Написал 18.12.2012 - 01:47

Свежие новости с твита Эло:"I want to thank everyone who donated over the past week. It's let me take a few days of unpaid leave to try to finish up RP." (Хочу поблагодарить всех кто сделал пожертвования за прошедшую неделю. Это позволит мне взять несколько дней не оплачиваемого отпуска, что бы попытаться закончить RP.)

#1257 NitroBoy2

NitroBoy2

    Опечаленный гастами

  • Главные модераторы
  • Сообщений: 2671
  • Ник в Minecraft:
    NitroToxin2
  • Откуда: Екатеринбург -> Москва

Написал 18.12.2012 - 05:32

This website is under construction - наконец-то шото новенькое на сайте :)Еще на блоге написано, что Wordpress тяжеловатP.S. Что за мод - Minia?
Скрытый текст

#1258 NikitaR

NikitaR

    Добытчик камня

  • Пользователи
  • Сообщений: 238
  • Откуда: Москва :)

Написал 18.12.2012 - 10:01

Она хочет сменить движок сайта, а то этот крашится. Хм, у меня даже under construction нету, просто не открывает =D

#1259 Eretic

Eretic

    Добытчик алмазов

  • Пользователи
  • Сообщений: 600

Написал 18.12.2012 - 10:07

P.S. Что за мод - Minia?

Хз, но она его ОЧЕНЬ давно забросила судя по всему.
Ересь - иной взгляд на привычные вещи

Не зная ни сна, ни отдыха, при лунном и солнечном свете мы делаем деньги из воздуха, что бы снова пустить их на ветер

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

Этот новый светлый скин... Мои бедные, бедные глаза...

#1260 Lexor

Lexor

    Добытчик угля

  • Пользователи
  • Сообщений: 399
  • Откуда: Иркутская область

Написал 18.12.2012 - 10:17

Minia - не мод, а ее собственный инди-проект, что-то вроде майнкрафта, новостей о нем уже давненько небыло.


Количество пользователей, читающих эту тему: 7

0 пользователей, 7 гостей, 0 анонимных