code wiki / _hdl_build / nx_viz_time_gate.nx

nx_viz_time_gate.nx source

↩ module page · 57 lines · 2371 B

1// nx_viz_time_gate.nx -- REFEREE for the time layer (epoch->date KAT against known instants). 2// vt_format(0)=1970-01-01 vt_format(86400)=1970-01-02 vt_format(1000000000)=2001-09-09 3// vt_civil(0)=1970/1/1 vt_day_floor(90061)=86400 4// GREEN iff all. Sovereign: nx_viz_time + nx_syscalls. license_tier: ORIGINAL 5import "nx_viz_time.nx" 6import "nx_syscalls.nx" 7import "nx_gate_verdict.nx" 8 9func g_w(s: *u8) -> i64 { var n: i64 = 0; while s[n] != (0 as u8) { n = n + 1 } sys_write(1, s, n); return 0 } 10func g_streq(a: *u8, b: *u8) -> i64 { var i: i64 = 0; while 1 == 1 { if a[i] != b[i] { return 0 } if a[i] == (0 as u8) { return 1 } i = i + 1 } return 1 } 11func g_row(name: *u8, ok: i64) -> i64 { 12 if ok == 1 { g_w(" PASS " as *u8) } 13 if ok != 1 { g_w(" FAIL " as *u8) } 14 g_w(name); g_w("\n" as *u8) 15 return ok 16} 17 18func main() -> i64 { 19 g_w("viz-time gate (epoch -> civil date, integer)\n" as *u8) 20 let out: *u8 = sys_mmap(64) 21 let ymd: *i64 = sys_mmap(64) as *i64 22 var pass: i64 = 0 23 24 vt_format(0, out) 25 var t1: i64 = 0 26 if g_streq(out, "1970-01-01" as *u8) == 1 { t1 = 1 } 27 pass = pass + g_row("T1 epoch 0 -> 1970-01-01\x00" as *u8, t1) 28 29 vt_format(86400, out) 30 var t2: i64 = 0 31 if g_streq(out, "1970-01-02" as *u8) == 1 { t2 = 1 } 32 pass = pass + g_row("T2 epoch 86400 -> 1970-01-02\x00" as *u8, t2) 33 34 vt_format(1000000000, out) 35 var t3: i64 = 0 36 if g_streq(out, "2001-09-09" as *u8) == 1 { t3 = 1 } 37 pass = pass + g_row("T3 epoch 1e9 -> 2001-09-09\x00" as *u8, t3) 38 39 vt_civil(0, ymd) 40 var t4: i64 = 0 41 if ymd[0] == 1970 { if ymd[1] == 1 { if ymd[2] == 1 { t4 = 1 } } } 42 pass = pass + g_row("T4 civil(0) = 1970/1/1\x00" as *u8, t4) 43 44 var t5: i64 = 0 45 if vt_day_floor(90061) == 86400 { t5 = 1 } 46 pass = pass + g_row("T5 day_floor(90061) = 86400\x00" as *u8, t5) 47 48 // MIGRATED onto nx_gate_verdict by nx_gate_dry_apply (D001, minimal form): every check 49 // row above is untouched, so the PASS/FAIL vector cannot change; only the hand-rolled 50 // verdict emission is replaced by the ONE shared base class. Proven by nx_gate_migrate verify. 51 let ctr__dry: *i64 = gv_ctr() 52 ctr__dry[0] = pass 53 ctr__dry[1] = 5 54 let rc__dry: i64 = gv_verdict("VIZ-TIME-GATE" as *u8, ctr__dry, "5/5 (epoch->date + day ticks, bits-up)" as *u8) 55 sys_exit(rc__dry) 56 return rc__dry 57}