]>
       

Technical Background


   Clocky, as every TSR (terminate-and-stay-resident program) needs to
   hook on an interrupt vector to be woken up by an event. Clocky does a
   lot of different things so it needs various interrupt vectors:

    Clocky needs to display time and do other periodical tasks so they
     needed a timer interrupt. Clocky prior to v2.00 were using GEM timer
     (exact 20 ms/50 Hz) but as it caused various problems with other
     applications the new Clocky II. generation uses VBL as the main timer
     interrupt. As VBL depends on refresh-rate of your monitor (50 Hz on
     PAL TV, 60 Hz on NTSC TV and standard VGA, 71 Hz on SM124 and 50-120
     Hz on Falcon SVGA) Clocky uses the 200 Hz time counter (system
     variable named '_hz_200' at address 0x4BA) for exact time measurement.

    Clocky is also driven by hotkeys, so they need to hook on keyboard
     interrupt (ikbdsys of Kbdvbase()). They watch the keyboard buffer
     found using by calling Iorec() and filter all internal hotkeys and
     registered EHC from keyboard buffer. They also watch Alt-numeric
     keypad presses (if turned on in configuration) and build up the ASCII
     code which is put into the keyboard buffer when Alt key is released.
     The last function is to catch the Dead key press and convert it into
     appropriate ASCII value (there are conversion tables in Clocky that
     will be editable soon).
     Please note that you can disable nearly all functions of this Clocky'
     keyboard handler including external hotkeys, Alt-numeric pad codes and
     Dead keys.

    Clocky accelerates mouse, so it hooks on mousevec of Kbdvbase(), too.
     The routine for mouse accelerating is very short and thus very fast,
     no need to worry that this might cause system slow-down.

    Clocky can do on-the-fly conversion of characters sent to printer. For
     this they hook on xconout vector at 0x57e.

   Naturally all vectors follow XBRA standard, so other applications or
   Clocky itself can deinstall any of those vectors or change the order of
   hooked applications cleanly.