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