* PC-11 Paper tape reader/punch driver
if (pc11
.pcstate
!=CLOSED
) {
while(pc11
.pcstate
==WAITING
) {
PCADDR
->pcrcsr
= IENABLE
|RDRENB
;
PCADDR
->pcpcsr
=| IENABLE
;
while (getc(&pc11
.pcin
) >= 0);
while ((c
= getc(&pc11
.pcin
)) < 0) {
if ((PCADDR
->pcrcsr
&(ERROR
|BUSY
|DONE
))==0)
PCADDR
->pcrcsr
=| IENABLE
|RDRENB
;
sleep(&pc11
.pcin
, PCIPRI
);
if (PCADDR
->pcpcsr
&DONE
&& (c
= getc(&pc11
.pcout
)) >= 0)
if (pc11
.pcstate
==WAITING
) {
if (PCADDR
->pcrcsr
&ERROR
)
if (pc11
.pcstate
==READING
) {
if (PCADDR
->pcrcsr
&ERROR
)
putc(PCADDR
->pcrbuf
, &pc11
.pcin
);
if (pc11
.pcin
.cc
< PCIHWAT
)
PCADDR
->pcrcsr
=| IENABLE
|RDRENB
;
if (pc11
.pcout
.cc
<= PCOLWAT
)
if (PCADDR
->pcpcsr
&ERROR
) {
if (pc11
.pcout
.cc
>= PCOHWAT
)
sleep(&pc11
.pcout
, PCOPRI
);