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