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}