Last active
October 30, 2020 15:27
-
-
Save Sturmlilie/627cf84daec656ffe5d7ecbf7005c3d0 to your computer and use it in GitHub Desktop.
Fibercraft password-protected door
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
User-facing cluster, IN = input (terminal), STK = stack, TEST = digest output (infrared) | |
The hash algo is roughly equivalent to | |
int digest = 0; | |
for (ch in input) { | |
int val = ch ^ (ch & 0x0101 ? (ch << 4) : 0) ^ ch << 8; | |
digest ^= val; | |
} | |
#DEFINE IN UP | |
#DEFINE STK RIGHT | |
#DEFINE TEST LEFT | |
INIT: | |
MOV NIL, ACC | |
RDCH: SAV | |
MOV IN, ACC | |
JEZ ENDL | |
MOV ACC, STK | |
SHL 4 | |
MOV ACC, STK | |
SWP | |
MOV ACC, STK | |
SWP | |
SHL 4 | |
MOV ACC, STK | |
#BWTM | |
SWP | |
XOR STK | |
SWP | |
MOV STK, ACC | |
AND 0X0101 | |
JEZ XTRA | |
SWP | |
XOR STK | |
CONT: | |
XOR STK | |
JMP RDCH | |
ENDL: | |
SWP | |
MOV ACC, TEST | |
JMP INIT | |
XTRA: | |
SWP | |
MOV STK, NIL | |
JMP CONT | |
The testing cluster, IN = input (infrared), SND = sound, RED = redstone, TMR = timer, PW = hashed password | |
#DEFINE IN LEFT | |
#DEFINE SND RIGHT | |
#DEFINE RED UP | |
#DEFINE TMR DOWN | |
#DEFINE PW 0X1701 | |
LOOP: | |
MOV IN, ACC | |
SUB PW | |
JEZ OPEN | |
JMP CLOSE | |
#BWTM | |
OPEN: | |
MOV 0X0988 SND | |
NOP | |
MOV 0X0688 SND | |
NOP | |
MOV 0X0E88 SND | |
MOV 15, RED | |
MOV 80, TMR | |
MOV TMR, NIL | |
MOV 0, RED | |
JMP LOOP | |
#BWTM | |
CLOSE: | |
MOV 0X098C SND | |
NOP | |
MOV 0X088C SND | |
NOP | |
MOV 0X078C SND | |
JMP LOOP |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment