couple of mechanisms, and I tried to consolidate them. I elimitaed
call_intercept and merged it in with *asynint_ptr. Now the keyboard
interrupt can be used for C-user-defined interrupts. There is a new
variable asynint_code that can be set when an interrupt is signaled.
It is set to 0 by the system signal catcher. To generate a
user-defined interrupt, you need to set the KEYINT_MARK bit of
*asynint_ptr and set asynint_code to your integer code. Then when
this interrupt is fielded, it will call the keyboard interrupt handler
(set by set_inthandler imported from loader) which is a two argument
predicate. When it is called, the first argument will be the goal to
call when continuing out of the interrupt; the second argument will be
the value of asynint_code.