home *** CD-ROM | disk | FTP | other *** search
/ Chip 2005 April / CHIP_CD_2005-04.iso / software / netv / NVinst.exe / $INSTDIR / Scripts / Terminal / telnet.nvs < prev    next >
Encoding:
Text File  |  2005-02-22  |  4.3 KB  |  231 lines

  1. program Terminal_ANSI_TELNET;
  2. var evnt,i,csx,csy:integer;
  3.     s,xs,s1,s2,s3:string;
  4.     v1,v2:integer;
  5.     vv:array of integer;
  6.  
  7. function getescvar(ss:string;n:integer):integer;
  8. var i,j,k,e:integer;
  9.     ts:string;
  10. begin
  11. j:=3;i:=3;e:=0;k:=0;
  12. if(ss[length(ss)]<>';')then ss:=ss+';';
  13. repeat
  14. if ss[i]=';' then
  15. begin
  16. ts:=copy(ss,j,i-j);
  17. if(length(ts)<>0)then
  18. begin
  19. k:=k+1;
  20. vv[k]:=strtointdef(ts,0);
  21. if (i=length(ss))or(k=n)then e:=1;
  22. end;
  23. j:=i+1;
  24. end;
  25. i:=i+1;
  26. until e=1;
  27. result:=k;
  28. end;
  29.  
  30.  
  31. procedure workcmd(ss:string);
  32. var xs:string;
  33. begin
  34. if(length(ss)>1)then
  35. begin
  36. xs:='';
  37. if(ss[1]=chr($fa))then
  38. begin
  39. if(ss[2]=chr($18))then xs:=chr($ff)+chr(250)+chr($18)+chr(0)+'ANSI'+chr(255)+chr(240);
  40. if(ss[2]=chr($25))then xs:=chr($ff)+chr(250)+chr($25)+chr(0)+chr(0)+chr(0)+chr(255)+chr(240);
  41. end else
  42. begin
  43.  
  44. if ss[1]=chr($FD) then
  45. begin
  46. if(ss[2]=chr($25))or(ss[2]=chr($18))or(ss[2]=chr($1F))or(ss[2]=chr($01))then
  47. xs:=chr($FF)+chr($FB)+ss[2] else xs:=chr($FF)+chr($FC)+ss[2];
  48. end else
  49. if ss[1]=chr($FB)then
  50. begin
  51. if(ss[2]=chr($03))or(ss[2]=chr($01))then
  52. xs:=chr($FF)+chr($FD)+ss[2] else xs:=chr($FF)+chr($FE)+ss[2];
  53. end else
  54. if ss[1]=chr($FE)then
  55. begin
  56. xs:=chr($FF)+chr($FC)+ss[2];
  57. end;
  58. end;
  59.  
  60. send(xs);
  61. end;
  62. end;
  63.  
  64. procedure workinput;
  65. var ts,xs:string;
  66.     isesc,iscmd,n1,n2,n3,spos:integer;
  67. begin
  68. isesc:=0;spos:=1;iscmd:=0;setlength(ts,0);
  69. while(length(s)>=spos)do
  70. begin
  71. xs:=s[spos];
  72. if(isesc=1)then
  73. begin
  74. if(xs='K')then
  75. begin
  76. clearline;
  77. isesc:=0;
  78. end else
  79. if(xs='s')then
  80. begin
  81. csx:=wherex;csy:=wherey;
  82. isesc:=0;
  83. end else
  84. if(xs='u')then
  85. begin
  86. gotoxy(csx,csy,0);
  87. isesc:=0;
  88. end else
  89. if(length(ts)>2)then
  90. begin
  91. if(xs='H')or(xs='f')then
  92. begin
  93. getescvar(ts,1);
  94. getescvar(ts,2);
  95. gotoxy(vv[2]-1,vv[1]-1,0);
  96. isesc:=0;
  97. end else
  98. if(xs='m')then
  99. begin
  100. n2:=getescvar(ts,8);
  101. for n3:=1 to n2 do
  102. begin
  103. n1:=vv[n3];
  104. if(n1>=30)and(n1<50)then
  105. begin
  106. case n1 of
  107. 30:textcolor($000000);
  108. 31:textcolor($0000FF);
  109. 32:textcolor($00FF00);
  110. 33:textcolor($00FFFF);
  111. 34:textcolor($FF0000);
  112. 35:textcolor($FF00FF);
  113. 36:textcolor($FFFF00);
  114. 37:textcolor($FFFFFF);
  115.  
  116. 40:textbackground($000000);
  117. 41:textbackground($0000FF);
  118. 42:textbackground($00FF00);
  119. 43:textbackground($00FFFF);
  120. 44:textbackground($FF0000);
  121. 45:textbackground($FF00FF);
  122. 46:textbackground($FFFF00);
  123. 47:textbackground($FFFFFF);
  124. end;
  125. end;
  126.  
  127.  
  128. end;
  129. isesc:=0;
  130. end else
  131. if(xs='J')then
  132. begin
  133. getescvar(ts,1);if(vv[1]=2)then clrscr;
  134. isesc:=0;
  135. end else
  136. if(xs='A')then
  137. begin
  138. getescvar(ts,1);
  139. gotoxy(0,-vv[1],1);
  140. end else
  141. if(xs='B')then
  142. begin
  143. getescvar(ts,1);
  144. gotoxy(0,vv[1],1);
  145. end else
  146. if(xs='C')then
  147. begin
  148. getescvar(ts,1);
  149. gotoxy(vv[1],0,1);
  150. end else
  151. if(xs='D')then
  152. begin
  153. getescvar(ts,1);
  154. gotoxy(-vv[1],0,1);
  155. end;
  156.  
  157. end;
  158. if(isesc=1)then ts:=ts+xs else setlength(ts,0)
  159. end else
  160. begin
  161. if(xs=chr(27))then begin write(ts);isesc:=1;ts:=chr(27);end
  162. else if(xs=chr($ff))then
  163. begin
  164. if(iscmd<>0)then workcmd(ts) else write(ts);
  165. if(iscmd<>0)and(length(ts)=0)then
  166. begin write(' ');iscmd:=0;end else begin setlength(ts,0);iscmd:=1;end;
  167. end else ts:=ts+xs;
  168.  
  169. if(iscmd<>0)then
  170. begin
  171. if(xs<>chr($FA))and (iscmd=1)and (length(ts)>1)then begin workcmd(ts);setlength(ts,0);iscmd:=0;end;
  172. if(xs=chr($FA))and (iscmd=1) then begin iscmd:=2;end;
  173. if(xs=chr($F0))and (iscmd=2) then begin workcmd(ts);setlength(ts,0);iscmd:=0;end;
  174. end;
  175.  
  176.  
  177.  
  178. end;
  179. spos:=spos+1;
  180. end;
  181. if(isesc=0)and(iscmd=0)then begin write(ts);setlength(s,0);end else s:=ts;
  182. end;
  183.  
  184.  
  185.  
  186. begin
  187. setstatus('ANSI telnet terminal connected to '+nv_remoteip+':'+inttostr(nv_port));
  188. textbackground($000000);
  189. textfont(0);setoemcp(1);
  190. textcolor($00FF00);
  191. clrscr;
  192. s:='';SetArrayLength(vv,16);
  193. repeat
  194. evnt:=waitevent(v1,v2);
  195. if evnt=1 then
  196. begin
  197. s:=s+recv;
  198. workinput;
  199. end;
  200.  
  201. if evnt=4 then
  202. begin
  203. if(v1<128) then
  204. begin
  205. if(v2=37)then begin send(chr(27)+'[D');end;
  206. if(v2=39)then begin send(chr(27)+'[C');end;
  207. if(v2=40)then begin send(chr(27)+'[B');end;
  208. if(v2=38)then begin send(chr(27)+'[A');end;
  209. end
  210. end;
  211. if evnt=5 then
  212. begin
  213. xs:=chr(v2);
  214. if(v2=13)then xs:=xs+chr(10);
  215. send(xs);
  216. end;
  217. if evnt=6 then
  218. begin
  219. s1:='';s2:='';
  220. i:=getinputtext(s1,s2);
  221.  
  222. if(v2<>0)then begin s3:=s1+s2; setinputtext(2,'');end
  223.          else begin s3:=s1; setinputtext(1,'');end;
  224. if(i and 1)<>0 then s3:=s3+#13#10;
  225. send(s3);
  226. end;
  227.  
  228.  
  229. until evnt=0;
  230. end.
  231.