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}