README.TXT

MultiTimer 
   for the Psion 3a handheld computer
   Created 1995 by Erik Johansen <ej@it.dtu.dk>

   Version 1.00  -  Released December 1995 / January 1996

DESCRIPTION
   Many a time have I longed for a timer program for the Psion.
   I have tried out most available timer programs and none have
   matched my needs. Most timers can have only one counter, and
   require the time length to be retyped every time restarted.

   With MultiTimer things work a bit different. Only one counter
   (the first counter to expire) is visible at a time. But still
   up to 30 timers/jobs can be active at a time. MultiTimer does
   its work the same way as a multitasking scheduler. [This is
   still not perfect. Menus and dialogs temporarily stops the
   scheduler - so remember to exit dialogs]

   Up to 255 functions can be predefined (one for each ascii key
   combination).

   A 'timer' is started by pressing the associated key.  F.ex.:
   If the 'b' function is defined as 'W(28) B W(28) B', every
   time the 'b' key is pressed a new job shows up, first waiting
   28 seconds, giving a beep, waits another 28 seconds and gives
   another beep. This function I often use as a Waffle Timer when
   baking waffles.

   Internal functions that require parameters will prompt
   if a function name is typed directly from keyboard. For example
   press the 'W' key and you will be prompted for the wait time.
   Furthermore 'W' defaults to adding a 'B' bell when started
   from the keyboard.

   Jobs can be stopped/killed by placing the cursor over the job
   in the rightmost column and pressing delete. Tha last one
   killed can be inserted (restarted) by pressing Psion-I.

   Some examples of often used functions are:

   W(2h30m)S(Parking)           Remember to put a coin in the parking
                                meter after 2 hours 30 min

   h:  W(:00) B W(:30) B h      Forever: beep every half hour

   W(19:30) V(s) W(20:00) V(S)  Turn off all sounds from 19:30 to 20:00


FUNCTIONS
   Built-in functions are in uppercase to make it easier to define true
   one-key user definitions.

   Function          Example(s)            Description
   ----------------  --------------------  ------------------------------
   A(Time,Message)   A(12:30,Hello)         Schedule a regular alarm
                                            at specified time.

   B                 B                      Beep/Bleep 3 tone sound

   D(PhoneNumber)    D(1,555 1234)          Dials the phone number using
                     D(*2# *3212#)          touch tone dial codes.

   M(MacroName)    M(\macro\mco\Hangup.mco) Calls macro system
                                            (Tom Dolbilin)

   N(Notes/Tones)    N(3abcdefg)            Plays the notes represented
                     N(wow wow)             by letters:
                     N(20z)       <number>  Tone length in 1/20 sec for
                     N(25gjgjgj)            notes follwing.
                     N(5abk log)  a-z       Notes to play
                     N(10bac8 d d)          freq=440+2**(n%/12)
                                            n%=3,5,8,10,12 skipped.
                                  <space>   Silence (freq=0)
                                  <other>   Includes the function definition
                                            specified by that character.
                                            The definition should not
                                            include N()
                     N(10y y y 20y 10y 20y 10y y)

   O(Commands)       O(Commands)            Starts a new process with a
                     O(W(:00)S(bell))       definition that is not bound
                                            to a key. This is the same
                                            as the &() function.
                                            Can be used in a definiton to
                                            start parallel functions.

   P(Options)        P                      Power off (unconditionally)
                                            Currently all options are
                                            ignored.
                                            [Planned: P(?) off after alarm
                                            caused Psion to turn on. P(n)
                                            set auto switch off time]

   R<n>(Commands)    R25(S(Wroom))          Repeat sequence of commands
                                            number of times

   S(SoundFile,Time) S(Wroom)               Plays the specified sound
                     S(Wroom,30)            Internal sounds can be
                     S1  or  S(1)           specified as 1/2/3
                                            The optional time parameter
                                            limits the sound to x/20 sec.

   T                 T                      Start/Stop Stopwatch
                                            The Stopwatch timer has lower
                                            priority than all alarms and
                                            is only shown when no other
                                            timers are active. The stopwatch
                                            can be used as a simple flag
                                            to synchronize two jobs. First
                                            job starts the timer, Second
                                            job makes both jobs continue.

   V(Volume control) V(3)                   Sets volume of Psion sounds
                     V(s)             s/S   Sound system (all) off/on
                     V(5KBNa)         k/K   Keyboard click off/on
                                      b/B   Beep off/on
                                      a/A   Alarms off/on
                                      c/C   Low/High Click (keyboard)
                                      n/N   Low/High Notes (Beep)
                                      1-5   Sound level


   W(Time)           W(1/jun/)              Wait until time specified
                     W(tomorrow)            The Psion is automatically
                     W(3m)                  turned on when the timer expires
                     W200                   If no other commands follow the
                     W(12:00)               Wait function, then a Beep is
                                            automatically added.
                     W(mon thu fri 12:30)   <= Absolute time
                     W(1d 10h 30m 10s)      <= Relative time
                     W(//1995)              =  1/jan/1995 00:00:00
                     W(25/12 18: 19:30)     = 25/dec/1995 18:30:00 or 19:30:00
                     W(oct)                 = October (next match)
                     W(1/ 2/ 3/ mon)        = next monday that is 1st-3rd
                                              day of the month

   FunctionName      a                      Call/include definition of
                     k                      other function.

   "Comment"         "Good morning"         Print text at bottom right
                                            for a few seconds.

   &(Commands)       &(W(:30)B)&(W(:00)B)   Starts a parallel job

   <space>                                  Ignored


Psion combination keys

   Psion-A     Save as
   Psion-C     Copy
   Psion-D     Delete
   Psion-E     Edit
   Psion-I     Insert
   Psion-J     Jump to
   Psion-M     Merge file
   Psion-N     New file
   Psion-O     Open file
   Psion-R     Repaint screen
   Psion-S     Save
   Psion-W     Who did this?
   Psion-X     Exit

Other keys

   ESC         During sound: Stop sound. Otherwise return to system screen.
   DEL         Delete definition / Kill job  (use Psion-I to reinsert)
   MENU        Gives menu of the above functions
   HELP        Gives a few help screens
   ENTER       Edit function definition

   Cursor keys behave differently depending on the what field the cursor is in

      Input field:       DOWN moves to Function Definiton field
      Definition field:  UP/DOWN moves between definitions (scrolls)
                         LEFT moves to Input field
                         RIGHT moves to Active Job field
      Active job field:  UP/DOWN moves between jobs
                         LEFT moves to Function Definition field
   
INSTALLATION

  Copy MULTITIM.OPA into an \APP\ directory and install Multitim
  from the system screen (Psion-I), and you should be ready to run.

  \OPL\MULTITIM.OPL and \OPD\MULTITIM.PIC are only needed if you want
  to recompile the program.

AVAILABILITY

   New versions will be announced by mail to registered users and on my
   psion home page at   http://www.it.dtu.dk/~ej/psion.html

   ftp://ftp.frontiernet.net/pub/psion/utils/multitim.zip
   ftp://src.doc.ic.ac.uk/packages/psion/icdoc/utils/multitim.zip
   ftp://ftp.it.dtu.dk/pub/ej/psion/multitimer/mt100.zip
   comp.binaries.psion newsgroup and archives 
      

REGISTRATION

   Multitimer is shareware

   You have a 30 days test period. After that you are required to send
   a $10 ShareWare fee (in any currency - no coins, please) to

   Erik Johansen
   Danish Technical University
   Department of Information Technology
   Building 344/345
   2800 Lyngby
   Denmark

   Please include your Name and E-mail address.

   When your registration has been processed, you will receive the newest
   version by mail (uuencoded zip file). Your address will be added to
   a mailing list for registered users. New versions of Multitimer will be
   announced on the mailing list. I am currently working on setting up
   WWW access for registered users to download the most recent versions.

   Here are just some of the features that are planned in the next version,
   only available to registered users:

   *  Edit/Modification of jobs after queueing. This makes it easy to just
      press W <time>, then modify the action or time afterwards.

   *  Extended note capability for N().

   *  Auto power-off feature. Checks if the psion is active.

   *  E(time,function)    Every <time> do <function>
      F.ex.:  E(9:00 10: 11: 12: 13: 14: 19: 20: 21:, S(Cuckoo))

   *  And other new exciting features.


If you have ideas for changes or improvements to MultiTimer,
you are more than welcome to send them to me.

ej@it.dtu.dk