code wiki / _hdl_build / _rle_authored.nx

_rle_authored.nx source

↩ module page · 15 lines · 688 B

1// AUTHORED BY THE NISHI BUILDER (rle template) -- run-length decode, bits-up 2import "nx_syscalls.nx" 3func rle_decode(s: *u8, n: i64, out: *u8) -> i64 { 4 var op: i64=0; var i: i64=0 5 while i+1<n { let count: i64=s[i] as i64; let by: u8=s[i+1]; var k: i64=0; while k<count { out[op]=by; op=op+1; k=k+1 } i=i+2 } 6 return op 7} 8func main() -> i64 { 9 let s: *u8=sys_mmap(8); s[0]=3 as u8; s[1]=65 as u8; s[2]=2 as u8; s[3]=66 as u8 10 let out: *u8=sys_mmap(32); let n: i64=rle_decode(s, 4, out) 11 let exp: *u8="AAABB" as *u8 12 var ok: i64=1; if n!=5 { ok=0 } var i: i64=0; while i<5 { if out[i]!=exp[i] { ok=0 } i=i+1 } 13 if ok==1 { sys_exit(0) } sys_exit(1) 14 return 1 15}