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.