 sttl Terminal Interrupt Handling Task
 pag

*
* TI_HAN Terminal interrupt handler
*
TI_HAN ldy #TI_Q Terminal Interrupt Queue
 seti
 ldu TI_Q_ptr get current Q ptr
 cmpu #TI_Q anything in Q?
 bne 20f yes - go process it
 ldb #TIQPRI wait for something to do
 jsr sleep
 bra TI_HAN
20 ldb ,-u B = Interrupt #
 lda ,-u A = Device #
 stu TI_Q_ptr update pointer
 pshs d save registers
 ldb 0,s set up to flush all input for this terminal
 jsr ttftab
 jsr flushi
 clri allow interrupts
 ldb #R_INTRPT
 jsr FIO_get get access to FIO
 jsr fio_send send interrupt message
 ldb ,s+ terminal #
 jsr fio_send
 ldb ,s+ interrupt #
 jsr fio_send
 jsr FIO_rel release access to FIO
 bra TI_HAN process more if needed

*
* Send_TI - Send a terminal interrupt
*   B = Interrupt #
*   X = TTY Table
*   jsr send_TI
*
send_TI pshs d,x,y,u save registers
 ldu TI_Q_ptr get Q head
 cmpu #TI_Q_ptr check for overflow
 bhs 90f exit if so - sorry
 lda tdevic,x get terminal #
 sta ,u+ place value in Queue
 stb ,u+
 stu TI_Q_ptr update pointer
90 ldy #TI_Q wake up Queue server
 jsr wakeup
 puls d,x,y,u,pc return
