code wiki / (root) / nx_x11_connect_real_test.nx

nx_x11_connect_real_test.nx source

↩ module page · 53 lines · 1815 B

1// nx_x11_connect_real_test.nx -- Session 1 of bits-up browser arc. 2// 3// Proves we can talk X11 wire protocol to the real X server running 4// on this host (WSLg on Windows / Xorg on Linux). No third-party 5// X client; pure bits-up socket + protocol bytes. 6// 7// expect_exit: 0. 8// license_tier: ORIGINAL 9 10import "nx_syscalls.nx" 11import "nx_x11_connect.nx" 12 13func dump_dec(l0: i64, l1: i64, v: i64) -> i64 { 14 let lab: *u8 = sys_mmap(8) 15 lab[0]=l0 as u8; lab[1]=l1 as u8; lab[2]=0x3D 16 sys_write(2, lab, 3) 17 var av: i64 = v 18 if av < 0 { 19 let neg: *u8 = sys_mmap(8); neg[0]=0x2D; sys_write(2, neg, 1) 20 av = 0 - av 21 } 22 let buf: *u8 = sys_mmap(16) 23 var pos: i64 = 0 24 if av == 0 { buf[0]=0x30; pos = 1 } 25 var x: i64 = av 26 while x > 0 { 27 buf[pos] = (0x30 + (x % 10)) as u8 28 x = x / 10; pos = pos + 1 29 } 30 let out: *u8 = sys_mmap(16); var oi: i64 = 0 31 while oi < pos { out[oi] = buf[pos - 1 - oi]; oi = oi + 1 } 32 sys_write(2, out, pos) 33 let nl: *u8 = sys_mmap(8); nl[0]=0x0A; sys_write(2, nl, 1) 34 return 0 35} 36 37func main() -> i64 { 38 let rc: i64 = nx_x11_connect_local(0) 39 if rc < 0 { return 1 } 40 let c: *X11Conn = rc as *X11Conn 41 dump_dec(0x46, 0x44, c.fd) // FD= 42 dump_dec(0x52, 0x42, c.resource_id_base) // RB= resource_id_base 43 dump_dec(0x52, 0x4D, c.resource_id_mask) // RM= resource_id_mask 44 dump_dec(0x52, 0x57, c.root_window) // RW= root window 45 dump_dec(0x52, 0x56, c.root_visual) // RV= root visual 46 dump_dec(0x52, 0x44, c.root_depth) // RD= root depth (bits) 47 let ok: *u8 = "X11 OK -- connected, setup parsed\n\x00" 48 var i: i64 = 0 49 while ok[i] != 0 { i = i + 1 } 50 sys_write(1, ok, i) 51 sys_close(c.fd) 52 return 0 53}