2022-10-27 14:13:23 -04:00
|
|
|
var CreateAmtRemoteTerminal=function(e,r){var l,m={},f=(m.DivId=e,m.DivElement=document.getElementById(e),m.protocol=1,r.protocol&&(m.protocol=r.protocol),m.terminalEmulation=1,m.fxEmulation=0,m.lineFeed="\r\n",m.debugmode=0,m.width=80,m.height=25,m.heightLock=0,["000000","BB0000","00BB00","BBBB00","0000BB","BB00BB","00BBBB","BBBBBB","555555","FF5555","55FF55","FFFF55","5555FF","FF55FF","55FFFF","FFFFFF"]),g=0,u=7,w=0,C=!0,S=0,T=0,c=0,s=0,d=0,b=[],k=0,v=0,p=[],y=[],n=!1,K=!0,D=!1,B=[],F="";m.title=null,m.onTitleChange=null,m.Start=function(){},m.Init=function(e,r){m.width=e||80,m.height=r||25;for(var t=0;t<m.height;t++){y[t]=[],p[t]=[];for(var i=0;i<m.width;i++)y[t][i]=" ",p[t][i]=448}m.TermInit(),m.TermDraw()},m.xxStateChange=function(e){},m.ProcessData=function(r){if(2==m.debugmode&&console.log("TRecv("+r.length+"): "+rstr2hex(r)),0==m.terminalEmulation)try{r=decode_utf8(F+r)}catch(e){return void(F+=r)}F="",null!=m.capture&&(m.capture+=r);for(var e=r,t=0;t<e.length;t++){o=a=h=n=i=void 0;var i=String.fromCharCode(e.charCodeAt(t)),n=e.charCodeAt(t);switch(d){case 0:27===n?(d=1,b=[],v=k=0):E(i);break;case 1:switch(i){case"[":d=2;break;case"(":d=4;break;case")":d=5;break;case"]":d=6;break;case"=":D=!0,d=0;break;case">":D=!1,d=0;break;case"7":c=S,s=T,d=0;break;case"8":S=c,T=s,d=0;break;case"M":for(var h=l[1];h>=l[0]+1;h--)for(var a=0;a<m.width;a++)y[h][a]=y[h-1][a],p[h][a]=p[h-1][a];for(h=l[0]+1-1;h>l[0]-1;h--)for(a=0;a<m.width;a++)y[h][a]=" ",p[h][a]=448;d=0;break;default:console.log("unknown terminal short code",i),d=0}break;case 2:"0"<=i&&i<="9"?b[k]?b[k]=10*b[k]+(i-"0"):b[k]=i-"0":";"==i?k++:"?"==i?v=1:(b[0]||(b[0]=0),function(e,r,t,i){if(1==i)switch(e){case"l":25==r[0]&&(K=!1);break;case"h":25==r[0]&&(K=!0)}else if(0==i){var n,h;switch(e){case"c":m.TermResetScreen();break;case"A":1==t&&(0==r[0]?T--:T-=r[0],T<0)&&(T=0);break;case"B":1==t&&(0==r[0]?T++:T+=r[0],T>m.height)&&(T=m.height);break;case"C":1==t&&(0==r[0]?S++:S+=r[0],S>m.width)&&(S=m.width);break;case"D":1==t&&(0==r[0]?S--:S-=r[0],S<0)&&(S=0);break;case"d":1==t&&(T=(T=r[0]-1)>m.height?m.height:T)<0&&(T=0);break;case"G":1==t&&(S=(S=r[0]-1)<0?0:S)>m.width-1&&(S=m.width-1);break;case"P":var a=1;for(1==t&&(a=r[0]),n=S;n<m.width-a;n++)y[T][n]=y[T][n+a],p[T][n]=p[T][n+a];for(n=m.width-a;n<m.width;n++)y[T][n]=" ",p[T][n]=448;break;case"L":var o=1;for(0==(o=1==t?r[0]:o)&&(o=1),c=l[1];T+o<=c;c--)y[c]=y[c-o],p[c]=p[c-o];for(c=T;c<T+o;c++)for(y[c]=[],p[c]=[],a=0;a<m.width;a++)y[c][a]=" ",p[c][a]=448;break;case"J":if(1==t&&2==r[0])m.TermClear((w<<12)+(u<<6)),T=S=0,B=[];else if(0==t||1==t&&0==r[0])for(L(),n=T+1;n<m.height;n++)P(n);else if(1==t&&1==r[0])for(L(),n=0;n<T-1;n++)P(n);break;case"H":S=2==t?(r[0]<1&&(r[0]=1),r[1]<1&&(r[1]=1),r[0]>m.height&&(r[0]=m.height),r[1]>m.width&&(r[1]=m.width),T=r[0]-1,r[1]-1):T=0;break;case"m":for(n=0;n<t;n++)r[n]&&0!=r[n]?1==r[n]?u<8&&(u+=8):2==r[n]||22==r[n]?8<=u&&(u-=8):7==r[n]?g=2:27==r[n]?g=0:30<=r[n]&&r[n]<=37?(h=8<=u,u=r[n]-30,h&&u<=8&&(u+=8)):40<=r[n]&&r[n]<=47?w=r[n]-40:90<=r[n]&&r[n]<=99?u=r[n]-82:100<=r[n]&&r[n]<=109&&(w=r[n]-92):(u=7,g=w=0);break;case"K":0!=t&&(1!=t||r[0]&&0!=r[0])?1==t&&(1==r[0]?function(){for(var e=(u<<6)+(w<<12)+g,r=0;r<S;r++)y[T][r]=" ",p[T][r]=e}():2==r[0]&&P(T)):L();break;case"h":C=!0;break;case"l":C=!1;break;case"r":(l=2==t?[r[0]-1,r[1]-1]:l)[0]<0&&(l[0]=0),l[0]>m.height-1&&(l[0]=m.height-1),l[1]<0&&(l[1]=0),l[1]>m.height-1&&(l[1]=m.height-1),l[0]>l[1]&&(l[0]=l[1]);break;case"S":a=1;1==t&&(a=r[0]);for(var c=l[0];c<=l[1]-a;c++)for(var f=0;f<m.width;f++)y[c][f]=y[c+a][f],p[c][f]=p[c+a][f];for(c=l[1]-a+1;c<l[1];c++)for(f=0;f<m.width;f++)y[c][f]=" ",p[c][f]=448;break;case"M":a=1;1==t&&(a=r[0]);for(c=T;c<=l[1]-a;c++)for(f=0;f<m.width;f++)y[c][f]=y[c+a][f],p[c][f]=p[c+a][f];for(c=l[1]-a+1;c<l[1];c++)for(f=0;f<m.width;f++)y[c][f]=" ",p[c][f]=448;break;case"T":a=1;1==t&&(a=r[0]);for(c=l[1];c>l[0]+a;c--)for(f=0;f<m.width;f++)y[c][f]=y[c-a][f],p[c][f]=p[c-a][f];for(c=l[0]+a;c>l[0];c--)for(f=0;f<m.width;f++)y[c][f]=" ",p[c][f]=448;break;case"X":var a=1,s=S,d=T;for(1==t&&(a=r[0]);0<a&&d<m.height;)y[d][s]=" ",a--,++s>
|