Автоматизация печи

Выбрали нужный слиток, нажали на кнопку, печь его выплюнула..

Поступление ресурсов: склад подключаем к входу печи.

Выход газа: ставим насос 100L далее пассивная вентиляция.

Вход газа: тройное колено, на одну сторону - насос выкачки 100L, на вторую - регулятор давления 500kPa направленный в печь.

Насос и регулятор соединяем тройником и подключаем к баку с топливом 33%/67%

Ставим регулятор, кнопку и консоль хеш кода.

Ставим два сокета. Первый микропроцессор (Выбор рецепта)отвечает за выбор слитка, выдачу реагентов со склада и устанавливает параметр второго сокета - необходимое давление топлива. Второй контролирует печь.

Важно! Склад кормим стаками по 50, наличие ресурсов не контролируется, наличие топлива не контролируется. Защиты от дурака(Lock) не делал

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

## Код 1 процессора(Выбор рецепта):

````
alias Switch d0​   #кнопка активации
alias SoketFurnace d1​ #сокет второго микропроцессора(контроллер печи)
alias Trimmer d2​ #регулятор для выбора слитка
alias Sklad d3​ #склад с реагентами
s d2 Mode 10​
loop:​
yield​
l r1 d0 Activate​
bgtz r1 Activation​
l r0 d2 Setting​
beqz r0 loop​
mul r0 r0 6​
sub r0 r0 4​
jr r0​
j loop​
s db Setting 502280180 #1 electrum​
move r3 -916518678 #silver​
move r4 -1348105509 #gold​
move r5 3​
move r6 60​
j loop​
s db Setting -297990285 #2 invar​
move r3 1758427767 #iron​
move r4 1830218956 #nikel​
move r5 3​
move r6 280​
j loop​
s db Setting 1058547521 #3 ItemConstantanIngot​
move r3 -707307845 #copper​
move r4 1830218956 #nikel​
move r5 3​
move r6 115​
j loop​
s db Setting -82508479 #4 pripoi​
move r3 1758427767 #iron​
move r4 -190236170 #lead​
move r5 3​
move r6 50​
j loop​
s db Setting -654790771 #5 steel !!!​
move r3 1758427767 #iron​
move r4 1724793494 #coal​
move r5 1​
move r6 65 #Pass​
j loop​
s db Setting 226410516 #6 Gold​
move r3 -1348105509​
move r4 -1348105509​
move r5 4               # stack=50​
move r6 20​
j loop​
s db Setting -404336834 #7 Cu​
move r3 -707307845​
move r4 -707307845​
move r5 4               #stack=50​
move r6 20​
j loop​
s db Setting -1301215609 #8 iron​
move r3 1758427767​
move r4 1758427767​
move r5 4​
move r6 50​
j loop​
s db Setting -929742000 #9 serebro​
move r3 -916518678​
move r4 -916518678​
move r5 4​
move r6 20​
j loop​
s db Setting -290196476 #10 kremni​
move r3 1103972403​
move r4 1103972403​
move r5 4​
move r6 50 #Pass​
j loop​
Activation:​
jr r5​
push r3​
push r3​
push r4​
push r3​
Wait:​
yield​
yield​
s d3 ClearMemory 1​
beqz sp setPress​
pop r2​
s d3 RequestHash r2​   #Сброс реагента
yield​
ls r8 d3 1 Occupied​
l r9 d3 ExportCount​
seqz r9 r9​
add r8 r8 r9​
beqz r8 -5​
s d3 ClearMemory 1​
yield​
j Wait​
setPress:​
s d1 Setting r6​  #Активация второго процессора установкой в него параметра необходимого давления
j loop

````

## Код 2 процессора(контроллер печи):

````
alias Furnace d0​ # печь
alias Fuel d1​ #регулятор давления направленный во вход на печь 500kPa
alias Clear d2​ #насос выход из печки, откачка
alias FuelClear d3 #насос откачка из входа в печь топливной смеси оставшейся в трубе после активации печи​
alias Hash d5​ #Консоль показывающая хеш слитка рецепта
loop:​
yield​
l r1 d0 Pressure​
sgtz r1 r1​
s d2 On r1​
s d3 On r1​
l r9 db Setting​
beqz r9 loop​
s db Setting 0​
s d1 On 0​
s d2 On 1​
s d3 On 1​
yield​
l r1 d0 Pressure​
brgtz r1 -2 #Wait Pressure=0​
s d2 On 0​
s d3 On 0​
s d1 On 1​
yield​
l r1 d0 Pressure​
brlt r1 r9 -2  #Wait Pressure&gt;Chip​
s d1 On 0​
s d0 Activate 1​
l r3 d5 Setting # Need​
yield​
ls r4 d0 0 Occupied   #r4=0 go​
seqz r4 r4​
l r2 d0 RecipeHash #Current​
mul r2 r2 r4​
brne r2 r3 -5 #Wait ​
s d0 Open 1​
yield​
yield​
yield​
s d0 Open 0​
j loop

````

На Марсе и луне работает, Европу не проверял, возможно параметры давления необходимо будет чуть-чуть повысить(r6 в коде выбора рецепта)