code wiki / _hdl_build / _ds_smoke.nx

_ds_smoke.nx source

↩ module page · 23 lines · 1384 B

1// _ds_smoke.nx -- compile/link smoke test for nx_driver_shapes: emit a tiny WIRE_TLV + finisher 2// image into a scratch buffer and print the byte length, proving the shape library compiles, 3// links, and the encoder runs. Sovereign. license_tier: ORIGINAL 4import "nx_syscalls.nx" 5import "nx_driver_shapes.nx" 6 7func sm_p(s: *u8) -> i64 { var n: i64=0; while s[n]!=(0 as u8){n=n+1} sys_write(1,s,n); return 0 } 8func sm_n(v: i64) -> i64 { let bb: *u8=sys_mmap(28); var m: i64=v; if m<0{m=0-m}; let t: *u8=sys_mmap(28); var k: i64=0; if m==0{t[0]=48;k=1}; while m>0{t[k]=(48+(m%10)) as u8;m=m/10;k=k+1}; var i: i64=0; while i<k{bb[i]=t[k-1-i];i=i+1}; sys_write(1,bb,k); return 0 } 9 10func main() -> i64 { 11 let buf: *u8 = sys_mmap(4096) 12 var o: i64 = 0 13 o = ds_w32(buf, o, ds_lui(DS_T0, DS_UART >> 12)) // t0 = UART base 14 o = ds_w32(buf, o, ds_lui(DS_T2, 0x10001)) // t2 = a device base 15 o = ds_emit_verify(buf, o, 0x000, 0x74726976, 100) // WIRE_TLV verify 16 o = ds_emit_regwrite(buf, o, 0x070, 1) // WIRE_TLV write 17 o = ds_emit_memstore(buf, o, DS_T5, 0, 2, 0xDEADBEEF) // STRUCT_WALK store 18 o = ds_emit_poll_until_set(buf, o, 0x014, 1, 0x01C, 1) // STATE_MACHINE poll (backward branch) 19 o = ds_emit_finisher(buf, o) 20 sm_p("DS-SMOKE bytes=" as *u8); sm_n(o); sm_p(" ok\n" as *u8) 21 sys_exit(0) 22 return 0 23}