putchar char c [if(c==0)c='"' return MC c,1 ] getchar [return MC 2 ] chrdy[return MC 12] pft char f(0),t(0)[MC f,t,13] gs char b(0) [int l while((b(l)=MC(2))!=13)[ if(b(l)==21)[l=0;pl">"] else if(b(l)==127)[if(l>0)l=l-1;] else if(b(l)==18)[MC(13,1);pft b,b+l-1] else l=l+1 ] b(l)=0 return l ] ps char b(0)[ int k(0);k(0)=1 pft(b,b-1+scann(b,b+30000,0,k)) ] pl char b(0) [MC 13,1 ps b ] alpha char a [ if((a>='a')*(a<='z'))return 1 if((a>='A')*(a<='Z'))return 1 ] num char b(5) int v(0) [int k v(0)=0 while(k<5) [if((b(k)<'0')+(b(k)>'9'))return k v(0)=10*v(0)+b(k)-'0' k=k+1 ] return k ] atoi char b(0) int v(0) [int k,s char c s=1 c=b(0) while((c==' ')+(c=='-')+(c=='+')) [if(c=='-')s=-1 c=b(k=k+1) ] k=k+num(b+k,v) v(0)=s*v(0) return k ] pn int n [ MC ' ',1 MC n,14 ] gn [char b(20) int v(0) while(1) [gs b if(atoi b,v)return v(0) ps"number required " ] ] ceqn char a(0),b(0) int n [int k k=-1 while((k=k+1)l) [pl"Too big" return -2 ] ] ] writefile char n(0),b(0),e(0) int u [int k,t,l MC(2,n,e-b+1,u,3) while(b<=e) [ l=e-b if(l>127)l=127 k=MC(b,b+l,u,5) if(k<0)return k if(k>0)return -k t=t+l+1 b=b+l+1 ] k=MC(u,6) if(k<0)return k if(k>0)return -k return t ] fopen int m;char n(0);int s,u[return MC m,n,s,u,3] fread char a(0);int u[return MC a,u,4] fwrite char f(0),t(0); int u[return MC f,t,u,5] fclose int u[MC u,6] fdos int f,a[return MC f,a,1001] sefcb char f(0),e(0)[return MC f,e,1002] prefcb char e(0)[MC e,1003] endlibrary int er(0),cu,lo,pe,lp int ll,la char ft(40),tt(40) int fl,tl char ln(120),pr( 5200) main [char c int v(1) lp= 5200 pr(0)=13 while(1) [ps "> ll=gs(ln) if(ll==0)[ln(0)='+';ln(1)=0] c=ln(0) if(c=='.') [if(num(ln+1,v))go(v) else if((ln(2)==0)+(alpha(ln(2))==0)) [c=ln(1) if(c=='p')pt else if(c=='d')dl else if(c=='l')oi else if(c=='c')ch else if(c=='/')fa else if(c=='r')gi else if(c=='w')gu else if(c=='x')return else [ps"???";pl""] ] else if(ceqn(ln+1,"dir,3))[ if(ln(4)==0)dir"*" else dir ln+5 ] else st ] else if(c=='-')up else if(c=='+')do else in ] ] pi int n [int f,l,v(0) v(0)=n f=fc lo=lo+v(0)-1 l=cu+scann(pr+cu,pr+pe,13,v) cu=l lo=lo-v(0) MC pr+f,pr+l,13 ] fc [int k if((k=cu)==0)return 0 while(pr(k=k-1)!=13)if(k<0)break return k+1 ] lc [int k k=cu-1 while(pr(k=k+1)!=13)if(k>=pe)break return k ] nl [if((cu=lc()+1)>pe) [cu=pe return 0 ] return lo=lo+1 ] bl [if((cu=fc()-1)<0)cu=0 else lo=lo-1 ] pt[ int v(0) if(ln(2))num(ln+3,v) else v(0)=1 pi(v(0)) ] dl [int f,l,v(1) if(cu==0) [ps"cannot delete line 0";pl"" return ] if(ln(2)==0)v(0)=1 else num(ln+3,v) la=la-v(0) f=fc l=cu+scann(pr+cu,pr+pe,13,v) la=la+v(0) lo=lo-1 cu=f-1 if(llp) [ps"won't fit";pl"" return ] if(nl)movebl(pr+cu,pr+pe,ll) else[cu=cu+1;lo=lo+1] pe=pe+ll movebl(ln,ln+ll-1,pr-ln+cu) pr(cu+ll-1)=13 la=la+1 ] wh [int f,l,u,b pn lo;ps" --- err ;pn er(0);pl" u=cu f=fc b=u-f l=lc f=f-1 while((f=f+1)=0)putchar(' ') putchar '<';pl" ] do [int v(1) if(ln(1)==0)v(0)=1 else num(ln+1,v) v(0)=v(0)+lo go(v) ] up [int v(1) if(ln(1)==0)v(0)=1 else num(ln+1,v) if((v(0)=lo-v(0))<0)v(0)=0 go(v) ] go int l(1) [lo=l(0) l(0)=l(0)+1 cu=scann(pr,pr+pe,13,l) lo=lo-l(0) pi(1) ] fa [pn lo;pn la;pn pe;pn lp-pe;pl"] st [while(ll<=120) [ln(ll)=' ' ll=ll+1 ] MC(er,ln+1,pr+pe,pr,11) if(cu<0)cu=0;if(cu>pe)cu=pe lo=countch(pr,pr+cu-1,13) pl";pl" if(er(0)) if(er(0)==99)[ps"stopped";pl""] else wh ] gi [int k k=readfile(ln+3,pr+pe+1,pr+lp,1) if(k<0)return pe=pe+k la=countch(pr+1,pr+pe,13) pn k;pl"";fa ] gu [fa if(ll>3) pn writefile(ln+3,pr+1,pr+pe,1) else ps"write what" pl" ] dir char f(0) [ char e(36),d int k if(sefcb(f,e))[ ps"???" return ] fdos(14,e(34)) d=17 while(1)[ k=fdos(d,e) if(k==255)return k=129+32*(k%4) pft k,k+10 pl"" d=18 ] ]