xref: /inferno-os/appl/cmd/irtest.b (revision 37da2899f40661e3e9631e497da8dc59b971cbd0)
1implement Irtest;
2
3include "sys.m";
4	sys: Sys;
5include "draw.m";
6include "ir.m";
7	ir: Ir;
8
9Irtest: module
10{
11	init:	fn(nil: ref Draw->Context, argv: list of string);
12};
13
14stderr: ref Sys->FD;
15
16init(nil: ref Draw->Context, nil: list of string)
17{
18	x := chan of int;
19	p := chan of int;
20
21	sys = load Sys Sys->PATH;
22	stderr = sys->fildes(2);
23
24	ir = load Ir Ir->PATH;
25	if(ir == nil)
26		ir = load Ir Ir->SIMPATH;
27	if(ir == nil) {
28		sys->fprint(stderr, "load ir: %r\n");
29		return;
30	}
31
32	if(ir->init(x,p) != 0) {
33		sys->fprint(stderr, "Ir->init: %r\n");
34		return;
35	}
36	<-p;
37
38	names := array[] of {
39		"Zero",
40		"One",
41		"Two",
42		"Three",
43		"Four",
44		"Five",
45		"Six",
46		"Seven",
47		"Eight",
48		"Nine",
49		"ChanUP",
50		"ChanDN",
51		"VolUP",
52		"VolDN",
53		"FF",
54		"Rew",
55		"Up",
56		"Dn",
57		"Select",
58		"Power",
59	};
60
61	while((c := <-x) != Ir->EOF){
62		c = ir->translate(c);
63		if(c == ir->Error)
64			sys->print("Error\n");
65		else if(c >= len names)
66			sys->print("unknown %d\n", c);
67		else
68			sys->print("%s\n", names[c]);
69	}
70}
71