;====================================================================== ; Interrupt handlers (12_Nov_84) ;=============================== ; ; Control program for Morrow Terminal ; Copyright 1984 ; Morrow Designs, Inc. ; San Leandro, Ca. ; ; Written by David Block and Jim Kearney (September 1983) ; ; ;---------------------------------------------------------------------- ; Irq occurs when the keyboard wants to send a char to the processor ;------------------------------------------------------------------- ; FTCHKEY:PLA ; fix so RTI returns properly TAX INX TXA PHA PHP IRQVEC: PHA TYA ; else PHA ; save registers TXA PHA JSR GETKEY ; get key from keyboard LDY LOCKMD ; see if keyboard locked BMI IRQRET ; if (keyboard locked) then return JSR KEYINS ; else, insert character key buffer IRQRET: PLA TAX ; restore registers PLA TAY PLA ; and return RTI PAGE ;---------------------------------------------------------------------- ; Ok, we've got a character interrupt from the USART. ;---------------------------------------------------- ; NMIRET: LDA S1DATA ; clear NMI, and throw away the character PLA RTI NMIVEC: SEI ; disable interrupts PHA LDA NMIOK ; see if NMI is enabled CMP #$A5 ; must be A5 to handle interrupts BNE NMIRET TYA ; save other registers PHA TXA PHA LDA S1DATA ; GET A CHARACTER FROM USART AND #%01111111 ; ignore the eighth bit CMP #$0 ; don't put nulls in buffer BEQ NOINS JSR ININS ; put in incoming character buffer if room exists NOINS: PLA TAX PLA TAY PLA RTI PAGE END