Files
Digital-Research-Source-Code/CPM OPERATING SYSTEMS/CPM 68K/1.0X SOURCES/v102a/alclib/getchar.c
Sepp J Morris 31738079c4 Upload
Digital Research
2020-11-06 18:50:37 +01:00

45 lines
643 B
C

/*
Copyright 1983
Alcyon Corporation
8716 Production Ave.
San Diego, CA 92121
@(#) getchar.c - Sep 12, 1983 REGULUS 4.1
*/
/* v6 getchar routine */
#define BSIZE 512
struct iob {
int fd; /* file descriptor */
int cc; /* char count */
char *cp; /* ptr to next character */
char cbuf[BSIZE]; /* char buffer */
} fin;
getchar()
{
char c;
register int i;
if (fin.fd == 0) {
if (read(0,&c,1) <= 0 || c==4)
return(0);
i = c;
return(i & 0xff);
}
if (fin.cc <= 0) {
fin.cp = &(fin.cbuf[0]);
fin.cc = read(fin.fd,fin.cp,BSIZE);
}
if (fin.cc <= 0)
return(0);
fin.cc--;
i = *(fin.cp)++;
return(i & 0xff);
}