Jump to content


Photo

[1.4.6] RedPower 2 [Prerelease 6]


  • Please log in to reply
2372 replies to this topic

#2361 Cyxapuk

Cyxapuk

     

  • Главные модераторы
  • Active Posts8706
  • Ник в Minecraft:
    Meegoo

Posted 27.11.2013 - 21:52

Filter стаками вытаскивает.

V6xCzSN.png


#2362 Princess Celessia

Princess Celessia

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

  • Пользователи
  • Active Posts316

Posted 27.11.2013 - 22:30

и какой стороной его поставить? На него нужен постоянный сигнал, или таймер?
Использую тампоны для удовлетворения голода.

#2363 DIMFIRE

DIMFIRE

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

  • Пользователи
  • Active Posts3412

Posted 27.11.2013 - 23:09

Первый пост-нэ?
То же, что и Транспортёр, но имеет 9 слотов, которые определяют допустимые предметы, машина будет работать только с ними[paste][/paste] Если фильтр с пустыми слотами [b]получит импульс[/b], то он заберет из инвентаря перед ним стак любого предмета[paste][/paste] Если в слоте будет предмет, то он заберет только этот предмет[paste][/paste] Если в слоте будет несколько одинаковых предметов, то он заберет столько же предметов[paste][/paste]

Если вы задаете вопрос " у меня не работает двигатель/машина/etc" то сопровождайте его скриншотами что и как у вас не работает

#2364 krylovilya1

krylovilya1

    Странник

  • Пользователи
  • Active Posts2
  • Откуда: Братск

Posted 05.11.2015 - 16:18

Здравствуйте. Третий день мучаюсь. Как передавать значение переменных между компьютерами? И как можно реализовать следующее? Второй комп ожидает, когда первый отправит цифру, и если она 0<>, то выполнит слово slovo.



#2365 DU_HAST

DU_HAST

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

  • Пользователи
  • Active Posts271
  • Ник в Minecraft:
    Rostisha
  • Откуда: Краснодар

Posted 05.11.2015 - 23:24

Эммм.... Некропостить то зачем? Неужели до сих пор на 1.4.7 играете? Или ваш вопрос не о red power а по project red? 


Изображение
Изображение
Нажмите сюда чтобы увидеть всю подпись
Скрытый текст

#2366 krylovilya1

krylovilya1

    Странник

  • Пользователи
  • Active Posts2
  • Откуда: Братск

Posted 06.11.2015 - 11:29

Эммм.... Некропостить то зачем? Неужели до сих пор на 1.4.7 играете? Или ваш вопрос не о red power а по project red?

Именно о red power 2 на 1.4.7.Да и я считаю, что этот топик незаслуженно забыт

#2367 Обалдуй

Обалдуй

    Зачарователь

  • Пользователи
  • Active Posts1898
  • Ник в Minecraft:
    resursator
  • Откуда: Нижний Новгород

Posted 06.11.2015 - 13:04

Вполне заслуженно. Элораам плюнула на развитие мода, а старые версии модов большинству неинтересны.


76561198029398229.pngAddFriend.png
Список модов на моей сборке.


#2368 biom

biom

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

  • Пользователи
  • Active Posts355

Posted 06.11.2015 - 15:31

К тому же, возможности данного мода уже неплохо реализованы в других модах.

А Элораам респект, она сделала в своё время прекрасный мод, да и не только его ))



#2369 oleg955

oleg955

    Странник

  • Пользователи
  • Active Posts2

Posted 12.09.2016 - 03:30

Здравствуйте

Подскажите мне нужно что бы сортон брал с сундука со всех слотов, но определенное  количество  

т.е  не с 0 слота, а искал если на 0 слоте нету предметов и брал с дргова слота 

КАК ПРИМЕР

4 SORTADDR !

10 0 SORTPULL 



#2370 IIoZiTiV

IIoZiTiV

    Странник

  • Пользователи
  • Active Posts1
  • Ник в Minecraft:
    IIoZiTiV

Posted 07.06.2018 - 00:09

Ребят,может пишу не туда,но кто знает помогите.Программирую Sortron на MineOs 1.2Программа выглядит так: test4 SORTADDR !100 0 SORTPULL;При этой программе сортрон с ид 4 отправляет вещи в желтый цвет. Но он отправляет из 0 слота. Как сделать чтоб он отправлял из всего сундука,если нужно больше 200 предметов. Заранее спасибо.


Edited by IIoZiTiV, 14.06.2018 - 14:47.


#2371 _random

_random

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

  • Пользователи
  • Active Posts151

Posted 07.06.2018 - 22:21

Это не совсем правильная программа. SORTPULL кладет в стек количество перемещенных предметов. Поэтому нужно хотя бы удалить это из стека, иначе стек когда-нибудь переполнится. То есть, в данном случае после 100 0 SORTPULL нужно было добавить DROP.

А так тебе наверное надо 100 0 SORTPULL заменить на цикл:20010 0 DO  DUP  I SORTPULL -LOOPDROP

Число 10 заменить в соответствии с количеством слотов в сундуке. Также возможно стоит добавить выход из цикла при извлечении заданного количества предметов, т.к. при каждом обращении к периферии создается задержка в 1 тик, если я правильно помню.

 

Но что ты творишь? Ты же пишешь на еле живой форум в совсем мертвую тему. Да еще предыдущий вопрос в этой теме полностью аналогичен твоему.



#2372 Biolog

Biolog

    Странник

  • Пользователи
  • Active Posts3
  • Ник в Minecraft:
    BigBoss
  • Откуда: Беларусь

Posted 16.01.2019 - 22:08

Ребят, кто хорошо знает FORTH и все прелести SORTRON просьба отписаться :)

Примечание модератора [NitroBoy2]
Каждый новый пользователь проходит ручную премодерацию первого сообщения для защиты от спам-ботов, на премодерацию может уйти какое-то время :P Объединил сообщения.
Здраствуйте. Остались те кто программирует на FORTH MineOS v1.2? Модификация RedPower 2
Скрытый текст
Интересует вопрос по SORTRON Как сделать что бы он сканировал все слоты в инвентаре? И при нахождении нужного предмета он его высасывал в определённом количестве?



#2373 oleg955

oleg955

    Странник

  • Пользователи
  • Active Posts2

Posted 10.11.2020 - 10:12

Скиньте Программу набора текста пожалуйста
а то ссылка битая 

 Добавлено спустя 38 секунд:

В этих вкладках собраны несколько гайдов, программ и механизмов. Надеюсь, вы найдёте их полезными.
Гайдов по ассемблеру не будет.

Скрыть

Управление сигналами. (Декодер)

Скрытый текст


Массивы и строки

Скрытый текст


Взаимодействие между компьютерами

Скрытый текст


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

Скрытый текст


Перенос дискет на сервер через клиент

Скрытый текст


Гайды

Пароль на рычагах (by HitriyLis)

Скрытый текст


Блокировка паролем (by HitriyLis)

Скрытый текст


Картинка на FORTH (by HitriyLis)

Скрытый текст


Таблица кодировки (by HitriyLis)

Скрытый текст


Программы
Данный раздел содержит коды различных полезных функций и библиотек.


Assembler Helpers

Скрытый текст



Операции над 32-разрядными числами (by _random)

Скрытый текст



Разное

Скрытый текст


Библиотеки

SFIV (by HitriyLis)

Скрытый текст


ProtectOS (by HitriyLis)

Скрытый текст


OS

Летающая машина (by VikR)

Скрытый текст


Лифт (by VikR)

Скрытый текст


Музыкальный проигрыватель (by HitriyLis)

Скрытый текст


Механизмы

Программа для набора (by _random)

Скрытый текст


Эмулятор RP-компьютера


Скрытый текст
Полезное
В этих вкладках собраны несколько гайдов, программ и механизмов. Надеюсь, вы найдёте их полезными.
Гайдов по ассемблеру не будет.



В этих вкладках содержится описание внутреннего устройства компонентов, а также как управлять периферией.
Управлять периферией можно как из Форта, так и при помощи ассемблера.

Скрыть
Форт позволяет использовать устройства не вникая в механизм их работы, но с устройствами можно сделать больше, чем предоставляет нам стандартный набор слов. Управляются устройства через собственную память, доступ к которой можно получить с помощью RBP! (память этих устройств как бы "отображается" в памяти компьютера). Я буду расписывать "карту" памяти каждого устройства, где число до двоеточия - смещение адреса окна (т.е. если написано 0хFF, то необходим байт с адресом 0х300 + 0хFF = 0х3FF), 2 числа через дефис - диапазон, а после двоеточия - смысл этого байта или диапазона.

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

Введение
0x0000 Нулевая страница
0x100 P-стек
0x200 R-стек
0x300 Основной порт ввода-вывода
0x400 Приёмный порт (заодно там хранится загрузчик)
0x500 RAM (Образ диска загружается сюда)


При нажатии на кнопку start с панели считываются ID дисковода и терминала и помещаются в начало памяти (0-й и 1-й байт соответственно). Затем по адресу 0x400 скидывается загрузчик, который копирует содержимое дискеты в память начиная с 0x500. После выполнения передаёт управление на адрес 0x500 и более не нужен (его можно удалить).

Список инструкций процессора.

MMU:
В таблице не задокументирована инструкция MMU, которая требует 1 байт в качестве параметра.
ID, адреса и смещения берутся/записываются в регистр А.
0x00 Переключает порт ввода-вывода на другое устройство.
0x80 Получает ID текущего устройства.

0x01 Устанавливает адрес смещения порта ввода-вывода.
0x81 Получает текущее смещение порта ввода-вывода.

0x02 Включает порт ввода-вывода.
0x82 Выключает порт ввода-вывода.

0x03 Устанавливает адрес смещения принимающего порта.
0x83 Получает текущее смещение принимающего порта.

0x04 Включает принимающий порт.
0x84 Выключает принимающий порт.

0x05 Устанавливает адрес программного прерывания (BRK).
0x85 Возвращает текущий адрес BRK.

0x06 Устанавливает адрес POR (не знаю для чего он).
0x86 Возвращает текущий адрес POR.


ЦП
0x00-0x01: Регистр входа (это 2-х байтовое число считывает IOX@)
0x02-0x03: Регистр генерации сигнала (это число устанавливает IOX!)


Первые 2 байта - это совокупность сигналов, которые декодер генерирует и принимает (надеюсь, вы уже знаете как кодируются цвета =). Вторая пара байтов - только те сигналы, которые декодер генерирует.
Например, если нет никаких сигналов, то оба числа равны 0.
Если выполнена команда 2 IOX! и нет других сигналов, то оба числа равны 2.
И наконец, если выполнена предыдущая команда и на декодер подаётся сигнал только с белого провода, то первое число 3, а второе 2.

Декодер
0x00-0x7F: Буфер дисковода, размером в 1 сектор (128 байт).
0x80-0x81: Номер сектора
0x82: Команда для дисковода: (далее значения этого байта)
0: Ничего или удачное завершение предыдущей команды
1: Прочитать имя дискеты
2: Записать имя дискеты
3: Прочитать ID дискеты (серийный номер)
4: Прочитать сектор дискеты
5: Записать сектор дискеты
0xFF: Неудачное завершение предыдущей команды


Серийный номер:
Каждая дискета при создании получает случайный ID, состоящий из 16 HEX цифр в виде строки. Этот ID задаётся раз и навсегда (можно только "сбросить" на ID загрузочной дискеты с Фортом). Чтобы прочитать ID, необходимо выполнить команду №3. После выполнения команды дисковод оставит в начале буфера ID в виде текста (оставшееся место заполняется нулями). Дисковод выдаст ошибку только в одном случае: если нет дискеты.

Имя:
Каждую дискету можно назвать как угодно и переименовывать сколь угодно раз. Максимальная длина имени 64 символа. Чтение имени аналогично чтению ID, только используется команда №1. Для того, чтобы изменить имя дискеты, поместите это имя в буфер (не забудьте, что последний байт должен быть нулевым) и выполните команду №2.
Ошибка может возникнуть если нет дискеты или вы попытались переименовать загрузочную дискету (у неё защита от записи).

Данные:
Данные с дискеты читаются и записываются на неё только секторами по 128 байт.
На каждой дискете может быть до 2049 секторов, это значит, что дискета может содержать до 262272 байт или, примерно, 256 Кб. Чтобы прочитать с дискеты нужный сектор, поместите его номер в байты 0x80-0x81 и выполните команду №4. Прочитанный сектор будет находится в буфере и вам остаётся только скопировать его в память компьютера (всем этим занимается DISKRS) или изменить данные прямо в буфере для последующей перезаписи.
Ошибка может возникнуть если нет дискеты или требуемый сектор не существует (чтение за пределом файла-образа).
Примечание: если размер файла не кратен 128 байтам, то сектор, содержащий конец файла, может быть прочитан и размещён в буфере, но дисковод не обнулит оставшуюся часть и выдаст ошибку.

Чтобы переписать сектор дискеты, поместите данные в буфер, поместите номер сектора в соответствующие место и выполните команду №5. Ошибка возникнет, если нет дискеты или эта дискета загрузочная.

Дисковод
Курсор:
0x01: столбец x
0x02: строка y
0x03: режим (0: спрятан, 1: сплошной, 2: мигающий)

Буфер ввода с клавиатуры (16 байт, FIFO):
0x04: Указатель начала очереди
0x05: Указатель конца очереди
0x06: Значение клавиши в начале очереди

Действия с областями:
0x07: Команда (1: заполнить, 2: выделить(инверсия цвета); 3: копировать)
Координаты левого верхнего угла:
0x08: x координата области источника / Значение для заполнения
0x09: y (необходимо только для копирования)
0x0A: х координата области, требуемой для изменения
0x0B: y
0x0C: Ширина области
0x0D: Высота области

Доступ к видеопамяти:
0x00: Номер строки для чтения/изменения
0x10-0x60: Содержимое строки


Разрешение монитора 80х50 знакомест. Нумерация строк и столбцов от 0 слева-направо и сверху-вниз.

Курсорсм. Трубы:
Тут всё просто, помещаете в байты 0х01 и 0х02 нужные координаты и курсор переместится (этим занимается AT-XY). С режимом курсора тоже просто. Например, введите HEX 0 303 C! и курсор исчезнет (2 303 С! чтобы его вернуть).

Чтение с клавиатуры:
Терминал самостоятельно читает нажатие клавиш и помещает их значение в собственный буфер (при наличии места), даже если терминал не связан с компьютером. Буфер пуст, если оба указателя равны (это проверяет KEY?). Буфер переполнен, если указатель конца находится перед указателем начала. Таким образом, буфер может реально хранить до 15 символов (если 16, то будет невозможно различить переполненный и пустой буфер). Если программе нужно прочитать символ, то необходимо сравнить указатели, если они не равны, то значение необработанной клавиши будет находится в байте 0x06. Терминал никак не реагирует на чтение с буфера, поэтому программе нужно самостоятельно увеличить на 1 указатель начала (всё это выполняет KEY). Заметьте, что терминал самостоятельно уменьшает число указателя, если оно больше 15 (возвращает остаток деления на 16).
Небольшой прикол: введите HEX 7 304 +! и компьютер зациклится выполняя эту команду снова и снова. Эта команда переставляет указатель начала очереди на 7 позиций вперёд, но т.к. очередь закольцована, то реально он переставляется на 9 позиций назад. Буфер теперь не пуст и Форт-система думает, что вы что-то ввели и обрабатывает это обычным способом. В буфере сохранена предыдущая команда (точнее 3), которая снова колдует с буфером. Терминал работает самостоятельно и из такого цикла можно выбраться нажав 7 раз любую клавишу. Указатель конца очереди дойдёт до позиции, где расположен первый символ команды и при выполнении очередного цикла буфер будет пуст.

Видеопамять:
Программы могут напрямую менять информацию, выводимою на экран. Для этого надо в байт 0x00 поместить номер строки (от 0 до 49) и в последнем диапазоне менять данные по своим нуждам. Терминал может выводить 128 различных символов. Оставшиеся 128 символов те же самые, только выводятся с инверсией цвета (чёрное на зелёном). Различить символы с инверсией можно по старшему биту.

Действие с областями:
При очистке экрана и прокрутке ФОРТ-система не обращается к видеопамяти. Вместо этого она просто посылает команды с нужными параметрами на терминал, а тот сам делает всё необходимое. Это весьма удобно, т.к. можно сохранить место в памяти и сэкономить время на написание кода и в момент его исполнения.

Заполнение:
Для заполнения прямоугольного участка 1 символом нужно сделать следующее:

    [*]Номер нужного символа поместите в байт 0x08.
    [*]Координаты левого верхнего угла области заполнения поместите в байты 0x0A и 0x0B.
    [*]Ширину и высоту заполняемой области поместите в байты 0x0C и 0x0D.
    [*]Поместите число 1 в байт 0x07 и ждите завершения команды.
    [/list](Команда PAGE заполняет весь экран символом с номером 0х16(пробел))

    Выделение:

      [*]Координаты левого верхнего угла области для выделения поместите в байты 0x0A и 0x0B.
      [*]Ширину и высоту выделяемой области поместите в байты 0x0C и 0x0D.
      [*]Поместите число 2 в байт 0x07 и ждите завершения команды.
      [/list]Например, можно "выделить" весь экран. Для этого введите:
      PAGE (Необходимо, чтобы прокрутка не сбила ваши настройки)HEX0  30A ! (Заполняем сразу 2 байта нулями)50 30C C! (80 столбцов в HEX-е 50)32 30D C! (50 строк в HEX-е 32)2  307 C! (Всё зелёное!)
      Можно ещё раз ввести последнюю строку (несколько раз)

      Копирование:

        [*]Координаты левого верхнего угла области, которую хотите скопировать, поместите в байты 0x08 и 0x09.
        [*]Координаты левого верхнего угла области, которую нужно изменить, поместите в байты 0x0A и 0x0B.
        [*]Ширину и высоту выделяемой области поместите в байты 0x0C и 0x0D.
        [*]Поместите число 3 в байт 0x07 и ждите завершения команды.
        [/list]Стоит обратить внимание, что копирование производится байт за байтом слева-направо и сверху-вниз. Об этом важно помнить, когда области пересекаются.
        Например, пусть экран содержит следующий текст:
        ABCDEFGHIJKLMNOPQRSTUVWXY
        Терминал настроен копировать область 3х3 с позиции (1,1)(там где "G") в позицию (1,0)(там где "В"). Результат предсказуем:
        AGHIEFLMNJKQRSOPQRSTUVWXY
        Но, если копировать из (1,1) в (1,2), то результат будет иным:
        ABCDEFGHIJKGHIOPGHITUGHIY
Терминал
0x00: микрокоманда
1: Определить размер инвентаря
2: Прочитать содержимое слота
3: Извлечь
4: Фильтр
0x01: Количество предметов
0x02: Номер слота
0x04: Идентификатор предмета (4 байта!)
0x08: Повреждённость предмета
0x0A: Предел прочности предмета
0x0C: Исходящий цвет
0x0D: Входящий цвет


Цвет:
0 - нет цвета/не окрашен.
От 1 до 16 - конкретный цвет. Порядок как у шерсти (т.е. обычный)

Слоты нумеруются от 0.
Для исполнения микрокоманд сортрону нужно блутричество.
Не работает с игроками, вагонетками и прочими сущностями. Только с блоками.

Определение размера инвентаря:
Определяется количество слотов у инвентаря, расположенного перед лицевой стороной сортрона. Результат сохраняется в регистре 0x01.
Ошибка возникнет если перед сортроном труба или нет инвентаря.

Чтение слота:
Позволяет собрать информацию о конкретном слоте.
Перед исполнением команды нужно занести номер нужного слота в регистр 0x02. После исполнения вся информация о слоте будет в регистрах 0x01-0x0A.

Извлечение предметов:
Перед исполнением нужно занести в регистр 0x02 номер слота, из которого нужно извлечь содержимое, а в регистр 0x01 - количество. Также в регистр 0x0С нужно занести цвет, которым будет помечен предмет (или без цвета).
После исполнения регистр 0x01 будет содержать число извлечённых предметов (может быть меньше запрошенного).

Режим фильтрации:
*тут мне нужно уточнить подробности...*
Сортрон
В этих вкладках содержится описание внутреннего устройства компонентов, а также как управлять периферией.
Управлять периферией можно как из Форта, так и при помощи ассемблера.

 

замени ссылку на Программу набора текста пожалуйста пожалуйста а то она битая 


Edited by oleg955, 10.11.2020 - 10:13.



4 user(s) are reading this topic

0 members, 4 guests, 0 anonymous users