[LispM-Hackers] Interrupts work (mostly), and Yet Another Question

John Morrison jm@mak.com
Sat Mar 9 07:11:02 2002


Hi;

(Hope this gets out -- first message from newly-configured sendmail
implementation and I lack real DNS entries.)

Last night, james asked why the hell interrupts weren't working (some
people are SO HARD to please -- Hi, james :-).

Well, I have some Good News, and some Bad News.

The Good News is that I am getting clock interrupts, and they are
regular as a heartbeat.  The interrupt handling machinery fires up and
catches them, prints out the pseudo-vectored interrupt number (8, for
the terminally curious, or should I say 010, in keeping with
NewThink?), returns from the exception, and the "main" ersatz
microcode program keeps on ticking.

The Bad News is that, when I push a key on the keyboard, I *do* get an
interrupt (number 9 or 011), but I cannot generate another one on
subsequent key presses, probably because I am not resetting the 8259
PIC (or something like that).

This is how I remember leaving things last time I touched this code,
because we were going to write all our drivers in Java (so this level
of functionality was perfectly acceptable).  At least the bits haven't
rotted too much beyond what I already told you.

However, this brings up the issue of how to reset the PIC, etc, and
the larger issue of how to handle drivers in e3.  As I said earlier,
I'd really like to do this kind of thing in Lisp (field an interrupt
in Lisp, service it in Lisp, and move on).  I would hate to write a
TON of code the other way (e.g., make the 8259 PIC and keyboard combo
look just like the Explorer one by writing lots of code in C++).
However, it is by far the most expedient thing to do now.

Suggestions?

I guess I should also chase down/up wherever the keyboard type
information/documentation stuff lives in the copious (I am NOT being
sarcastic) documentation we've got.

-jm

-- 
==== John Morrison
==== MAK Technologies Inc.
==== 185 Alewife Brook Parkway, Cambridge, MA 02138
==== http://www.mak.com/
==== vox:617-876-8085 x115
==== fax:617-876-9208
==== jm@mak.com