On Wed 05 Sep 2018 at 04:24:20 -0700, Al Kossow wrote: > > https://www.ioccc.org/2018/mills/hint.text
I had to make some changes to prog.c to get this to work on NetBSD 8. As-is, it sets the baud rate of its controlling terminal to 0 and thereby hangs it up. (Is that feature disappeared from Linux, that nobody noticed this rather fatal bug?) --- prog.c.orig 2018-09-12 19:41:32.934592869 +0200 +++ prog.c 2018-09-12 21:19:52.179421018 +0200 @@ -3,13 +3,22 @@ #include<termios.h> #include <sys/time.h> #include <sys/mman.h> +#include<string.h> # define L } if(!i -- ){ struct timeval F,G; struct termios H,U={ T} ; enum{ N=64,a=N<<7,b=a-1,c=a*32,d =c-1, e=c/ 2,f= a*2, g=a/2,h =g/2,j =h/ 2,Q=V*j*5} ; char*s=P,K,M; int* p, l[ a] ,m,n,J,o=A, O=j,E,R,i,k,t,r,q,u,v,w,x,y,z ,B,C, *D,Z ;int main (){ for(D=mmap(D,4*Q,3,W,open(I,2 ),K); *s; o -++[ l]=k|=* s++%N){ k=* s++%N<<12; k|=*s++% N*N; } tcgetattr(q,& H); tcsetattr -(y,2, &U); for( fcntl(B,4,4); ; o&=b){ if(k& c){ q=- --k%N; if(!q) +++[ l]=k|=* s++%N){ k=* s++%N<<12; k|=*s++% N*N; } +tcgetattr(q,& H); +struct termios HH; +HH=H; +HH.c_iflag = U.c_iflag; +//HH.c_oflag = U.c_oflag; +//HH.c_cflag = U.c_cflag; +HH.c_lflag = U.c_lflag; +tcsetattr +(y,2, &HH); for( fcntl(B,4,4); ; o&=b){ if(k& c){ q=- --k%N; if(!q) k-=c ;i =k /N&7; { L L if(J&1) m+= t; J|=m%N*c; J/=2; m /= 2; if(! q&&r ^n){ m^=d; J^= d; n=0; } L L J+=J; J|=m>=0; if(q){ m+=m; m|=J/c; m+=m<0?t:-t; } else{ m+=(m<0)*t; if(r)m^=d; if(n^r)J^= d; n=0; } -Olaf. -- ___ Olaf 'Rhialto' Seibert -- Wayland: Those who don't understand X \X/ rhialto/at/falu.nl -- are condemned to reinvent it. Poorly.
signature.asc
Description: PGP signature
_______________________________________________ Simh mailing list Simh@trailing-edge.com http://mailman.trailing-edge.com/mailman/listinfo/simh