code wiki / _hdl_build / _bitreader_authored.nx
_bitreader_authored.nx source
↩ module page · 23 lines · 846 B
1// AUTHORED BY THE NISHI BUILDER (nx_module_author bit-reader template) -- LSB-first bit I/O, bits-up
2import "nx_syscalls.nx"
3func br_bits(buf: *u8, len: i64, cursor: *i64, n: i64) -> i64 {
4 var val: i64 = 0; var got: i64 = 0
5 while got < n {
6 let bytepos: i64 = cursor[0] >> 3
7 if bytepos >= len { return 0 - 1 }
8 let bit: i64 = ((buf[bytepos] as i64) >> (cursor[0] & 7)) & 1
9 val = val | (bit << got)
10 cursor[0] = cursor[0] + 1; got = got + 1
11 }
12 return val
13}
14func main() -> i64 {
15 let buf: *u8 = sys_mmap(8); buf[0] = 0xB4 as u8
16 let cur: *i64 = sys_mmap(8) as *i64; cur[0] = 0
17 let a: i64 = br_bits(buf, 1, cur, 3)
18 let b: i64 = br_bits(buf, 1, cur, 3)
19 let c: i64 = br_bits(buf, 1, cur, 2)
20 if a == 4 { if b == 6 { if c == 2 { sys_exit(0) } } }
21 sys_exit(1)
22 return 1
23}