522,523 or the console buttons. Console buttons never generate an interrupt unless one is specifically user-written. VKEYBD can be used to process the key code before it undergoes conversion to ATASCII form. Initialized to 65470 ($FFBE) which is the OS keyboard IRQ routine. 522,523 20A,20B VSERIN POKEY serial I/O bus receive data ready interrupt vector, initialized to 60177 ($EB11), which is the OS code to place a byte from the serial input port into a buffer. Called INTRVEC by DOS, it is used as an interrupt vector location for an SIO patch. DOS changes this vector to 6691 ($1A23), the start of the DOS interrupt ready service routine. IRQ. 524,525 20C,20D VSEROR POKEY serial I/O transmit ready interrupt vector, initialized to 60048 (EA90), which is the OS code to provide the next byte in a buffer to the serial output port. DOS changes this vector to 6630 ($19E6), the start of the DOS output needed interrupt routine. IRQ. 526,527 20E,20F VSEROC POKEY serial bus transmit complete interrupt vector, initialized to 60113 ($EAD1), which sets a transmission done flag after the checksum byte is sent. IRQ. SIO uses the three last interrupts to control serial bus communication with the serial bus devices. During serial bus communication, all program execution is halted. The actual serial I/O is interrupt driven; POKEY waits and watches for a flag to be set when the requested I/O operation is completed. During this wait, POKEY is sending or receiving bits along the seriai bus. When the entire byte has been transmitted (or received), the output needed (VSEROR) or the input ready (VSERIN) IRQ is generated according to the direction of the data flow. This causes the next byte to be processed until the entire buffer has been sent or is full, and a flag for "transmission done" is set. At this point, SIO exits back to the calling routine. You can see that SIO wastes time waiting for POKEY to send or receive the information on the bus. 528,529 210,211 VTIMR1 POKEY timer one interrupt vector, initialized to 59314 ($E7B2), which is a PLA, RTI instruction sequence. Timer interrupts are established when the POKEY timer AUDF1 (53760; $D200) counts down to zero. Values in the AUDF registers are loaded into STIMER at 53769 ($D209). IRQ.