// (C) Copyright 1979 Tripos Research Group // University of Cambridge // Computer Laboratory SECTION "NEWCLI" GET "LIBHDR" GET "CLIHDR" GET "IOHDR" GLOBAL $( maxglob:ug+200 $) LET start() BE $( LET argv = VEC 50 LET pkt = VEC pkt.arg6 LET task = 0 LET dummy = maxglob IF rdargs("DEV",argv,50)=0 GOTO err IF argv!0=0 DO argv!0 := "**" FOR i = 1000 TO 501 BY -1 DO $( task := createtask(tcb!tcb.seglist, tcb!tcb.stsiz, i) UNLESS task=0 BREAK $) IF task=0 GOTO err cli.module!(cli.module!1) := globsize rootnode!rtn.tasktab!task!tcb.seglist!3 := cli.module IF sendpkt(-1, task, 0, -1, 0, copyobj(currentdir), consoletask, argv!0, copyobj(cli.commanddir), cli.defaultstack, cli.prompt)=0 GOTO err RETURN err:writes("NEWCLI failed*N") stop(20) $) LET cli.init(pkt) = VALOF $( initio() currentdir := pkt!pkt.arg1 consoletask := pkt!pkt.arg2 cli.currentinput := findinput(pkt!pkt.arg3) selectinput(cli.currentinput) UNLESS cli.currentinput=0 DO $( cli.currentoutput := findoutput(pkt!pkt.arg3) selectoutput(cli.currentoutput) $) IF cli.currentinput=0 | cli.currentoutput=0 DO $( endread() endwrite() returnpkt(pkt,0,result2) result2 := taskid RESULTIS deletetask $) UNLESS compstring(pkt!pkt.arg3,"**")=0 DO consoletask := ABS cli.currentinput!scb.type cli.background := FALSE cli.standardinput := cli.currentinput cli.standardoutput := cli.currentoutput cli.commanddir := pkt!pkt.arg4 returncode := 0 cli.returncode := 0 cli.faillevel := cli.initialfaillevel cli.result2 := 0 cli.commandfile%0 := 0 cli.defaultstack := pkt!pkt.arg5 cli.module := 0 FOR i = 0 TO pkt!pkt.arg6%0 DO cli.prompt%i := pkt!pkt.arg6%i writef("New CLI task %N*N", taskid) tcb!tcb.seglist!3 := 0 start := cli.undefglobval result2 := pkt RESULTIS qpkt $)