New !Alarm file format (v2.19 +)
================================

Offset    Contents
     0    Identifier - "ALRM" (&4D524C41)
     4    Ptr to first alarm as a BASIC integer
          -1 if none set
     9    Ptr to first free space as a BASIC integer
          -1 if none available
    14    First record

     n    Version number for this record as a BASIC integer
          (currently only 100 is recognised)
   n+5    Ptr to next alarm or free space block as a BASIC integer
          -1 if last record
  n+10    Ptr to previous alarm or free space block as a BASIC integer
          -1 if first record
  n+15    Alarm time:
          +15: year high byte
          +16: year low byte
          +17: month
          +18: date
          +19: hours
          +20: minutes
          +21: urgency flag
  n+22    Alarm text:
          Each string is a maximum of 40 characters, stored as BASIC strings
          (0 identifier, length byte then string). If alarm is a task alarm,
          the three strings are concatenated to form the command. If alarm
          is an application alarm, string 1 is the task name, string 2 is
          the task's unique identifier.

           +22: string 1 (1+1+40)
           +64: string 2 (1+1+40)
          +106: string 3 (1+1+40)
 n+148    Flags:
          bit 0 = application alarm
              1 = normal repeating alarm
              2 = task alarm
              3 = working week schedule
              4 = special repeating alarm

          If a normal repeating alarm then
           n+149    Repeat period:
                    bit 0 = minutes
                        1 = hours
                        2 = days
                        3 = weeks
                        4 = months
                        5 = years
           n+150    Repeat multiplier
          else
           n+149    Bits 0 to 3: day in week to repeat on (1-7)
                         4 to 7: offset within month (0-5, corresponding to
                                 SR messages)
                                 0000: 0: first
                                 0001: 1: second
                                 0010: 2: third
                                 0011: 3: last
                                 0100: 4: penultimate
                                 0101: 5: third to last
           n+150    Number of months to skip

Daylight saving is achieved through the use of application alarms to itself.
There are three application alarms initially set - one for going into DST,
one for coming out and one for reminding the user to reset the dates. The
alarms have similar task unique identifiers:

<alarm number>ddmmDDMMYYYY

where ddmm is the date and month of going into DST, DDMM is the date and
month of coming out of DST and YYYY is the year for these values. Alarm 3 is
always set on 1/1/YYYY+1
