;* FIX: parseperios should take a period like "11y5m3d20h13m4s32msec" or ;* "every tuesday at 10:30am" Right now it just takes a string representation ;* of milliseconds and returns the number (de parseperiod (period num msec) (strtol period 10) ) (setq timers (array 32)) ;* readtimer takes a handle to a period timer ;* a buffer and ;* FIX: should return a list of periodic timers, what does this mean? (de readtimer (handle buffer address bytes) (setq handle (cddr (strtok (car handle) "/"))) (cond ((nilp period) (setq period (car handle)))) (cond ((nilp address) (setq address (cdar handle)))) address ) ;* writetimer takes a handle to a period timer ;* a period in msec and ;* a address of timer code to be executed on timer firing. (de writetimer (handle period address i lret) (setq handle (cddr (strtok (car handle) "/"))) (cond ((nilp period) (setq period (car handle)))) (cond ((nilp address) (setq address (cdar handle)))) (setq i 1) (setq lret 0) (while (and (eqv lret 0) (lt i (array timers))) (cond ((nilp (array timers i)) (array timers i address) (SetTimer hwnd i (parseperiod period) 0) (setq lret 1) ) (t (setq i (add i 1))) ) ) lret )