%externalintegerfn x29call ! %recordformat %c TMODEF(%halfinteger FLAGS1, FLAGS2, {.04} %byteinteger PROMPTCHAR, ENDCHAR, {.06} %bytearray BREAKBIT1(0:3) {%or %halfintegerarray BREAKBIT2(0:1))} , {.0A} %byteinteger PADS, RPTBUF, LINELIMIT, PAGELENG, {.0E} %byteintegerARRAY TABVEC(0:7), {.16} %byteinteger CR, ESC, DEL, CAN, {.1A} %byteinteger FLAGS, INTERNAL STATE, LEADIN1, LEADIN2, XLO, XHI) {.20} !> ! ! ! ! ! !18 %start printstring("X3 parameter number must be between 1 and 18 (".sparm.")") newline retcode=1 %finishelse pval(j)=pv %continue %finish printstring("Parameter (".sparm.") not recognised"); newline retcode=1 %repeat j=3 area(1)=255 area(2)=2; {set parms} %for i=1,1,18 %cycle %if pval(i)#-1 %start area(j)=i;area(j+1)=pval(i)&x'ff' {*}{write(area(j),4);write(area(j+1),4);newline} j=j+2 %finish %repeat area(0)=j-1 %if j=3 %start printstring("No parameters changed");newline %finishelsestart %if retcode=0 %start %if pval(4)#-1 %start %if pval(4)#0 %then i=2 %else i=1 {2 => binary i.e. native} console(18,i,j) %finish L=3 %while l28 %then ip=28 area(l-3)=ip+2 area(l-2)=255 area(l-1)=2 {set} i=dmode(3,addr(area(l-3)),0) %if i#0 %start printstring("Failed to change parameters flag="); write(i,1);newline retcode=i %exit %finish {#} resp==array(addr(area(l)),area) l=l+ip i=1 %while i=100 %start s = tostring('0'+n//100) n=n-100*(n//100) %finish %if n>=10 %start s = s.tostring('0'+n//10) n=n-10*(n//10) %finish %result=s.tostring(n+'0') %end %if x29call=0 %then %result="" ans="" p=1 %while p<=18 %cycle np=19-p %if np>14 %then np=14 area(0)=2*(np+1) area(1)=255 area(2)=0 {read} %for j=1,1,np %cycle area(2*j+1)=p area(2*j+2)=0 p=p+1 %repeat i=dmode(3,addr(area(0)),0) %if i#0 %start %result="" %finish {#}resp==array(addr(area(3)),area) %for j=1,1,np %cycle %if resp(2*j-2)&x'80'=0 %start pr="P".tos(resp(2*j-2))."=".tos(resp(2*j-1))."," %if length(pr)+length(ans)<=255 %then ans=ans.pr %finish %repeat %repeat %if ans#"" %then ans=substring(ans,1,length(ans)-1) %result=ans %end %externalroutine testx3(%string(255)t) printstring(x3parms);newline %end %endoffile