Port-vax archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: KA630: how does console I/O actually work?



>> (Note that, unless I've totally misread the code, simh does the
>> equivalent of edge-triggered as well [for console SLU interrupts].)
> I just checked simh, and it appears to clear the interrupt pending as
> soon as the data register is read, which to me definitely means it's
> not edge triggered, but level triggered.

> Basically, the code looks like this:

Well, the code for reading RXDB, yes.

> int32 rxdb_rd (void)
> {
> int32 t = tti_unit.buf;                                 /* char + error */
> 
> if (tti_csr & CSR_DONE) {                               /* Input pending 
> ? */
>      tti_csr = tti_csr & ~CSR_DONE;                      /* clr done */
>      tti_unit.buf = tti_unit.buf & 0377;                 /* clr errors */
>      CLR_INT (TTI);
>      sim_activate_after_abs (&tti_unit, tti_unit.wait);  /* check soon 
> for more \
> input */
>      }
> return t;
> }

Right.

> Note the CLR_INT (TTI); in there.  Which will happen independent of
> if the CPU have picked up the interrupt or not.

But what does CLR_INT do?  It clears an element of int_req[], which I
was reading as the equivalent of the flipflop storing edge-triggered
interrupt triggering.

Hm, I think I see what you mean.  This is feeling unpleasantly complex.

I'll see how hard it is to switch my code back to a simple DONE&IE
level-triggered interrupt.  Perhaps I had something else wrong with the
code back when I tried that the first time.

/~\ The ASCII				  Mouse
\ / Ribbon Campaign
 X  Against HTML		mouse%rodents-montreal.org@localhost
/ \ Email!	     7D C8 61 52 5D E7 2D 39  4E F1 31 3E E8 B3 27 4B


Home | Main Index | Thread Index | Old Index