home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Archive Magazine 1997
/
ARCHIVE_97.iso
/
discs
/
mag_discs
/
volume_08
/
issue_06
/
risc_os
/
!Alarm
next >
Wrap
Text File
|
1988-12-22
|
3KB
|
79 lines
Additional Alarm documentation (0.98)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In addition to the "normal" user facilities of !Alarm as documented in the
User Guide, it is also possible for applications to set and receive alarms
by using some WIMP messages. These are as follows:
To set a task alarm, send the following message.
block+16 &500 indicate message to !Alarm
+20 0/1 indicate set an alarm (1 if 5 byte format)
+24 date/time
+30 name of task sender, terminated by 0
+n task-specific unique alarm identifier, terminated by 0
Date & time must be given in standard 5 byte format if +20 is 1, otherwise
the layout is:
+24 year as low-byte/high-byte
+26 month
+27 date
+28 hour
+29 minutes
Neither the name nor the alarm identifier may be longer than 40 chars each.
To cancel the alarm, use the following message block:
block+16 &500 indicate message to !Alarm
+20 2 indicate cancel an alarm
+24 name of task, terminated by 0
+n task-specific unique alarm identifier, terminated by 0
The name & identifier must match exactly for the alarm to be successfully
cancelled. It is not necessary to specify the time of the alarm, as this may
have changed due to being deferred by Alarm.
If these messages are sent recorded, !Alarm will acknowledge with 0 if
successful, or a 0 terminated error string.
When an alarm goes off, the format of the block sent by !Alarm as a
broadcast is:
block+16 &501 indicate an alarm has gone off
+20 name of task sender, terminated by 0
+n task-specific unique alarm identifier, terminated by 0
If the named task recognises the identifier, it must acknowledge this
message, otherwise !Alarm will ask the user to install the named
application. If the latter occurs, the alarm is deferred for one minute to
allow the task to be installed.
All alarms set are stored in <Alarm$Dir>.!Alarm. This is a data file
containing a linked list of alarms as follows:
PTR Contents
~~~ ~~~~~~~~
0 PTR to first alarm, -1 if none set
5 PTR to first free space, -1 if none available
...
For each alarm or free space block:
n PTR to next alarm/free space block, -1 if last
n+5 PTR to previous alarm/free space block, -1 if first
n+10 set alarm time stored as five byte format plus urgent flag
n+17 alarm text
contains 3 strings, each a maximum of 40 characters
if a task alarm then string 1 is the task name
string 2 is the unique indentifier
n+144 flags:
bit 0 = task alarm
1 = repeating alarm
n+145 repeat period:
bit 0 = minutes
1 = hours
2 = days
3 = weeks
4 = months
5 = years
n+146 repeat multiplier (1 byte)