GEOS MainLoop: The RTS mentioned in the previous paragraphs causes GEOS to return to its main routine (MainLoop). This is a simple polling loop that looks for things to do. Half of GEOS is interrupt driven and half of it is polled. It first checks if the user has done anything, in the following order: 1) Mouse direction change 2) Button status change 3) Key entered from keyboard 4) Mouse outside menu Then the main loop looks for something to do by checking the recurring timed events and the delayed routines, executing those that are ready. The main loop then maintains the memory image of the time and date and handles the alarm clock. Finally, if there is something at IMainLoop, it is called and the loop starts over. The IRQ interrupt routine does mainly I/O operations. First it decrements location $8515 if it is non-zero (counter for click box handler). Then it scans the keyboard and enters any depressed keys into the keyboard buffer. Location $880A is then decremented if it is non-zero (chime counter). Next, a jump is made to InterruptMain. After which, a jump is made through to process any user additions to the IRQ service routine. These additions should be fairly short so as not to make the interrupt take too long. Finally the status quo is restored and things go on their merry way.