code wiki / _hdl_build / _pe_dchan_arq.nx
_pe_dchan_arq.nx source
↩ module page · 49 lines · 1774 B
1// AUTHORED BY THE NISHI BUILDER (pattern: STATE_MACHINE) -- baked transition walk, no Claude logic
2import "nx_syscalls.nx"
3func _pe_dchan_arq_step(s: i64, e: i64) -> i64 {
4 if s < 0 { return 0 - 1 }
5 if s >= 5 { return 0 - 1 }
6 if e < 0 { return 0 - 1 }
7 if e >= 6 { return 0 - 1 }
8 if s == 0 { if e == 0 { return 1 } }
9 if s == 0 { if e == 1 { return 0 } }
10 if s == 0 { if e == 2 { return 0 } }
11 if s == 0 { if e == 3 { return 0 } }
12 if s == 0 { if e == 4 { return 0 } }
13 if s == 0 { if e == 5 { return 4 } }
14 if s == 1 { if e == 0 { return 1 } }
15 if s == 1 { if e == 1 { return 2 } }
16 if s == 1 { if e == 2 { return 1 } }
17 if s == 1 { if e == 3 { return 1 } }
18 if s == 1 { if e == 4 { return 1 } }
19 if s == 1 { if e == 5 { return 4 } }
20 if s == 2 { if e == 0 { return 2 } }
21 if s == 2 { if e == 1 { return 2 } }
22 if s == 2 { if e == 2 { return 3 } }
23 if s == 2 { if e == 3 { return 2 } }
24 if s == 2 { if e == 4 { return 2 } }
25 if s == 2 { if e == 5 { return 4 } }
26 if s == 3 { if e == 0 { return 3 } }
27 if s == 3 { if e == 1 { return 3 } }
28 if s == 3 { if e == 2 { return 3 } }
29 if s == 3 { if e == 3 { return 2 } }
30 if s == 3 { if e == 4 { return 3 } }
31 if s == 3 { if e == 5 { return 4 } }
32 if s == 4 { if e == 0 { return 4 } }
33 if s == 4 { if e == 1 { return 4 } }
34 if s == 4 { if e == 2 { return 4 } }
35 if s == 4 { if e == 3 { return 4 } }
36 if s == 4 { if e == 4 { return 4 } }
37 if s == 4 { if e == 5 { return 4 } }
38 return 0 - 1
39}
40func _pe_dchan_arq_run(ev: *i64, n: i64, s0: i64) -> i64 {
41 var s: i64 = s0
42 var i: i64 = 0
43 while i < n {
44 s = _pe_dchan_arq_step(s, ev[i])
45 if s < 0 { return 0 - 1 }
46 i = i + 1
47 }
48 return s
49}