home *** CD-ROM | disk | FTP | other *** search
/ Chip 2004 September / CHIP_CD_2004-09.iso / bonus / soft_rev / files / NVinst.exe / $INSTDIR / Scripts / Terminal / telnet.nvs < prev    next >
Encoding:
Text File  |  2004-08-04  |  4.5 KB  |  226 lines

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