1*37da2899SCharles.Forsythimplement Tclsh; 2*37da2899SCharles.Forsyth 3*37da2899SCharles.Forsythinclude "sys.m"; 4*37da2899SCharles.Forsyth sys: Sys; 5*37da2899SCharles.Forsyth 6*37da2899SCharles.Forsythinclude "draw.m"; 7*37da2899SCharles.Forsyth 8*37da2899SCharles.Forsythinclude "bufio.m"; 9*37da2899SCharles.Forsyth bufmod : Bufio; 10*37da2899SCharles.ForsythIobuf : import bufmod; 11*37da2899SCharles.Forsyth 12*37da2899SCharles.Forsythinclude "tk.m"; 13*37da2899SCharles.Forsyth 14*37da2899SCharles.Forsythinclude "../lib/tcl.m"; 15*37da2899SCharles.Forsyth tcl : Tcl_Core; 16*37da2899SCharles.Forsyth 17*37da2899SCharles.ForsythTclsh: module { 18*37da2899SCharles.Forsyth init: fn(ctxt: ref Draw->Context, argv: list of string); 19*37da2899SCharles.Forsyth}; 20*37da2899SCharles.Forsyth 21*37da2899SCharles.Forsythinit(ctxt: ref Draw->Context, argv : list of string){ 22*37da2899SCharles.Forsyth sys=load Sys Sys->PATH; 23*37da2899SCharles.Forsyth tcl=load Tcl_Core Tcl_Core->PATH; 24*37da2899SCharles.Forsyth if (tcl==nil){ 25*37da2899SCharles.Forsyth sys->print("Cannot load Tcl (%r)\n"); 26*37da2899SCharles.Forsyth exit; 27*37da2899SCharles.Forsyth } 28*37da2899SCharles.Forsyth bufmod=load Bufio Bufio->PATH; 29*37da2899SCharles.Forsyth if (bufmod==nil){ 30*37da2899SCharles.Forsyth sys->print("Cannot load Bufio (%r)\n"); 31*37da2899SCharles.Forsyth exit; 32*37da2899SCharles.Forsyth } 33*37da2899SCharles.Forsyth lines:=chan of string; 34*37da2899SCharles.Forsyth tcl->init(ctxt,argv); 35*37da2899SCharles.Forsyth new_inp := "tcl%"; 36*37da2899SCharles.Forsyth spawn tcl->grab_lines(nil,nil,lines); 37*37da2899SCharles.Forsyth for(;;){ 38*37da2899SCharles.Forsyth alt{ 39*37da2899SCharles.Forsyth line := <-lines => 40*37da2899SCharles.Forsyth line = tcl->prepass(line); 41*37da2899SCharles.Forsyth msg:= tcl->evalcmd(line,0); 42*37da2899SCharles.Forsyth if (msg!=nil) 43*37da2899SCharles.Forsyth sys->print("%s\n",msg); 44*37da2899SCharles.Forsyth sys->print("%s ", new_inp); 45*37da2899SCharles.Forsyth tcl->clear_error(); 46*37da2899SCharles.Forsyth } 47*37da2899SCharles.Forsyth } 48*37da2899SCharles.Forsyth} 49