X-Git-Url: https://git.subgeniuskitty.com/unix-history/.git/blobdiff_plain/d94e2462ae0bf5e8fb2f3108b6ba61fe4886c47c..1bbf66cfa8d4bce84261143b05ad0a438067e71d:/usr/src/cmd/adb/input.c diff --git a/usr/src/cmd/adb/input.c b/usr/src/cmd/adb/input.c index ce52a3ef8e..1c2531bd41 100644 --- a/usr/src/cmd/adb/input.c +++ b/usr/src/cmd/adb/input.c @@ -6,12 +6,13 @@ */ #include "defs.h" +SCCSID(@(#)input.c 2.2); INT mkfault; CHAR line[LINSIZ]; INT infile; CHAR *lp; -CHAR lastc EOR; +CHAR peekc,lastc = EOR; INT eof; /* input routines */ @@ -35,12 +36,18 @@ readchar() THEN lastc=EOF; ELSE IF lp==0 THEN lp=line; +#ifdef EDDT + getcon(lp); eof=0; while (*lp++!=EOR); +#else REP eof = read(infile,lp,1)==0; IF mkfault THEN error(0); FI PER eof==0 ANDF *lp++!=EOR DONE +#endif *lp=0; lp=line; FI - IF lastc = *lp THEN lp++; FI + IF lastc = peekc THEN peekc=0; + ELIF lastc = *lp THEN lp++; + FI FI return(lastc); } @@ -78,4 +85,22 @@ STRING deformat; IF fptr!=deformat THEN *fptr++ = '\0'; FI } - +#ifdef EDDT +getcon(cs) register char *cs; { +register char *p=cs; +for(;;) { + putchar(*p++=getcnsl()); + if (p[-1]=='\r') {putchar(p[-1]='\n'); *p++='\0'; return;} + if (p[-1]=='\\') {p[-1]=getcnsl(); continue;} + if (p[-1]=='#') {p -= 2; continue;} + if (p[-1]=='@') {putchar('\r'); putchar('\n'); p=cs; continue;} +}} + +getcnsl() { +# define RXCS 32 /* receiver control/staus */ +# define RXDB 33 /* receiver data */ +# define RXCS_DONE 0x80 /* receiver done */ +while ((mfpr(RXCS) & RXCS_DONE)==0); +return (mfpr(RXDB) & 0177); +} +#endif