diff --git a/devamlc.h b/devamlc.h index 20d1690..cfe8aa3 100644 --- a/devamlc.h +++ b/devamlc.h @@ -29,6 +29,14 @@ clock-line board generates EOR interrupts in this implementation. AMLDIM does not fill output queues on just an EOR interrupt. + - AMLDIM ignores the "buffer number" bit on a status request. + Instead, it switches buffers only when the current buffer is + completely full. This means, for example, it isn't possible to do + an EOR interrupt when a single character comes in and switch to + the other buffer, because AMLDIM will not check the other buffer. + Basically, there is a race condition between the hardware and + AMLDIM if the bufnum status bit is used, so Prime didn't use it. + - AMLDIM fills *every* AMLC board's output queue only when the clock line board interrupts with the "character time interrupt" (CTI) bit set; it also reads *every* AMLC board's input. This @@ -578,19 +586,17 @@ int devamlc (int class, int func, int device) { } else if (func == 07) { /* input AMLC status */ dc[dx].interrupting = 0; putcrs16(A, 040000 | (dc[dx].bufnum<<8) | (dc[dx].intenable<<5) | (1<<4)); - if (anyeor) { - putcrs16(A, getcrs16(A) | 0100000); - for (dx=0; dx