Home » Archimedes archive » Acorn User » AU 1996-12 B.adf » Features » PCA/Docs/Msg_Spec

PCA/Docs/Msg_Spec

This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.

Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.

Tape/disk: Home » Archimedes archive » Acorn User » AU 1996-12 B.adf » Features
Filename: PCA/Docs/Msg_Spec
Read OK:
File size: 71BE bytes
Load address: 0000
Exec address: 0000
File contents
Plug In Compliant Application protocol
======================================


Plug In Compliant Application Message specification
===================================================


Author : Rob Davison (rdavison@xtra.co.nz)
Date : 28/08/96 Status : Release 1

Notes: Filetype is divided into two fields with this format: 
 
 
           b 0-12 RISC OS filetype
           b13-31 reserved - zero.
  
On reading, please mask bits 13-31 out before checking the filetype.

Strings are null terminated but supporting applications should accept Ctrl.
terminated (ASCII 0-31).

'Address of base' is the beginning of the data structure which contains the
object.

'Offset to object' is the offset from the Address of base to the
object-of-interest

For example, the 'Offset to object' of a sprite is the offset to the sprite
itself (base!8 for the first sprite in a sprite area). The 'Address of base'
is the address of the sprite area in which the sprite resides. For objects
where the offset has no meaning the offset to the object must be zero.

The PCA references objects using 'tags'. Each tag is usually 16 bytes in
length and its format is defined thus: 
 
tag+0  = Address of base. (anchor)
tag+4  = Offset to object from base.
tag+8  = Length of object. (if applicable - see note below)
tag+12 = Extension size and flags
               b0-15 These bits are to provide for expansion of the size of a
               tag by up to 65532 bytes. Typically, this is for app. or object
               specific data. This document specifies two extensions to show
               you how it's done. Details below.
 
               b16-31 (reserved, set to zero)
 
The first two values in a tag are most important as they are pointers to the
address of the object and the base of the data structure containing it.
Remote tasks must *always* reference an object by reading these values.
Generally speaking, Remote tasks can usually trust the address and offset
until the next Wimp_Poll but if in doubt, re-read it from the tag. The Local
task has the responsibility of creating the object's tag when the object
joins the PCA system, updating the relevant fields in the tag if the object
is moved or resized and discarding the tag when it is sure it is no longer
needed. Tags must themselves be in a common memory area and they must not
move during the lifetime of the object in the PCA system. Clares provide a
small module called 'PCASupport' which may be freely distributed by
registered PCA developers to facilitate the creation of PCA tags for
applications which do not want to create tags themselves.

Notes:

Many objects store their length within the object data structure itself and
in that case you must use the value stored within the object's data instead
of relying on the length field in the tag. It is intended for object types
which include no record of their size (text for example).

Tag extensions must adhere to the following standard: 
 
tag+12.b0-15   = (bytes required+4). Multiples of 4 bytes only.
tag+16           extension id. Types 0-&fff are reserved for Clares PCA.
                 Other values are allocated in line with SWI/Message
                 chunk numbers for application developers.
(extended data dependant on tag id) 

To give an example of a tag extension we define two tag extensions which may
be used with PCA text objects. 
 
 
Simple text object
------------------

tag+12 8
tag+16 &FFF
tag+20 length of buffer allocated to object
       (ie the remote task can extend the size of the text (as given at tag+8)
       until its size reaches tag+20 bytes before calling Message_Resize.
 
Edited text object
------------------

tag+12 16
tag+16 &FFE
tag+20 length of buffer for first chunk
tag+24 offset to rest of text from object base
tag+28 length of rest of text 

Edited text objects are split into two separate parts, the pointer to base
at the beginning of the tag, points to the start of the first chunk of text,
the offset to object points to the end of this chunk of text (= the caret
position) while the values at tag+24 and tag+28 point to the rest of the
text. Suitable manipulation of these values should allow a text editor to
work with PCA. Note: this has not been tested with any code - any comments
please contact the author of PCA.

The tag extension system is potentially very powerful but please do not
abuse it. If everyone who ever writes a PCA program creates a tag extension
for their own object format then chaos will reign and the PCA system will
become useless. (Anyone questioning this is invited to use the specification
document for the TIFF file format as bedside reading - a perfect example of
a tagged file format gone wrong). In general, the basic tag structure or the
'pca text' extension defined above will do for most data types. If you
really feel you have to create your own extension then please double check
with Clares that a suitable extension does not already exist. The extension
should then be defined in the format given above and the information sent to
Clares for distribution to the PCA community.

On receipt of a PCA message you should decide if the message refers to one
of your objects (either a local one you created yourself or a remote object
which you are editing). You do this by comparing the object's tag address,
passed in the message, with a local array of tags that you know about. Get
into the habit of doing it this way (rather than comparing the tag's address
fields with your own data structures) as one message, Message_Deselect may
pass a tag address which no longer actually contains valid data (the object
itself having been deleted). See its entry for details.

In the following documentation ' Local ' is the 'owning task' being the task
to which the object is 'local'. This task created the object and its PCA
tag. It knows how to resize and how to delete the object.

' Remote ' is the 'utility' task - the one which modifies an object for the
'local' or owning task.

Please note which messages are to be broadcast and which are sent
task-to-task. The correct functioning of the system depends on the correct
usage.


PCA Message Summary
===================

This is intended to give the programmer an overview of what goes on in a
typical PCA session. It ignores many of the finer points of the protocol.

1. Local task broadcasts Message_WhosAbout for a selected object.

2. Remote tasks examine message data and respond with Message_ImHere.

3. Local task, in response to users choice of Remote sends
   Message_DoYourStuff.

4. (if doing inplace editing) Remote task, on receipt of DoYourStuff sends
   Message_HookMe.

5. (repeated) Remote and Local tasks broadcast Message_UpdateArea if the
   user changes the object.

6. Remote task sends Message_Unhook when user closes window/toolbar onto
   object.

7. Local task broadcasts Message_Deselect if user deletes object/quits
   program.

The variable names used in the example BASIC program are included after the
message number. 

Message_WhosAbout(&83484) (Msg_Whos%)
-------------------------------------

Broadcast by Local task when opening Utility sub-menu/popup (see the section
on user interface).

The block pointed to by R1 contains: 
 
R1+20   filetype of object
R1+24   address of object tag
R1+28   reserved - 0 

Receiving remote tasks should respond with Message_ImHere as defined below
if the filetype is 'interesting'. You can examine the data in the tag at
R1+24 if the filetype alone does not suffice (for example, a program which
can only edit 32bpp sprites should examine the sprite type word at
!(R1+24)+(R1+24)!4) +40 (ie tag address field+offset to object field)+40
before sending Message_ImHere ). 

Message_ImHere(&83485) (Msg_Im%)
-------------------------------- 

Sent by Remote task to Local task. Local records the data passed for later
use in creating a dialogue box or menu.

The block pointed to by R1 contains: 
 
R1+20
        bits 0-7 flags:
                b0 Spritename supplied
                b1 Info available
                b2 Reserved - 0
                b3 Tool wants to 'own' the object
                b4 Tool wants In place editing
                b5-7 Reserved - 0
                b8-31 Reserved - 0
 
R1+24           Tool id.
R1+28           String. Menu entry/Function name (eg. Contrast...).
                Length limited to 31chars+terminator.
R1+60           String. Name of sprite in wimp sprite pool
                (if b0 of R1+20 is set)
 
 
  
The tool id is intended for remote tasks which provide more than one
utility. It is returned to the task with Message_DoYourStuff . 

Flags: 
 
b0      indicates to the recipient that there is a sprite name at R1+60
        - the sprite is stored in the Wimp sprite pool and should be
        used when rendering the popup dialogue box.
 
 
b1      indicates that the tool can provide a response
        to  Message_Info .
 
b2      Reserved - 0
 
b3      indicates that the tool wants to 'own' the object.
        Local task should send Msg_Deselect for the object
        before sending  Message_DoYourStuff  if this bit is
        set. Do not set this bit unless you have to as it
        will prevent other remote tasks from sharing the
        object at the same time. It should only be set when
        the remote task wants to 'take over' the object completely.
 
        - such as Composition taking over a 32bpp sprite
        for use as a canvas.
 
b4      This bit is designed to allow for real 'in place editing'
        operations. Because of the amount of code necessary
        at the local end to handle this it has been defined
        as an optional part of the standard. 

Local applications which do not support in place editing should clear bit 4
of the flags word and send that with DoYourStuff. On receipt, the remote
application should check if bit 4 is still set and if not open a remote
window onto the object.

Notes: In early versions of this standard bits 28-31 of the flags word had
another use. This data has been moved to Message_HookMe. Please see below. 

Message_DoYourStuff(&83486) (Msg_Do%) 
-------------------------------------

The block pointed to by R1 contains: 
 
R1+20   Filetype of object
R1+24   Address of object tag
R1+28   reserved - 0
R1+32   Tool id
R1+36   Tool flags word
R1+40   String. Name of object or null (&0) 

Sent by Local task to remote task depending on entry selected in Utilities
sub-menu/dialogue. Remote task should record the tag address and open its
window (or just its toolbar if bit 4 of the flags word is set). 

Notes: 

If the Remote task set bit 4 of the flags word in Message_ImHere when
replying to  Message_WhosAbout it should check that this bit is still set
now. If it has been cleared then the Local task cannot handle remote
messaging and the Remote task must open a separate window onto the object.

If bit 4 is still set it means that the local task is willing to participate
in an in-place editing session. In this case the Remote task should simply
open its toolbar and send Message_HookMe to the Local task to ask it to
intercept mouse button and other Wimp events. Receipt of this message will
also cause the Local task to send Message_ObjectPosition to move the remote
tasks toolbar to the correct position.

Nothing about the standard prevents the object changing type (eg from sprite
to Drawfile) between  Message_WhosAbout and this message. On receipt of this
message the Remote task must therefore check the filetype field and as much
of the object's data structure as necessary to ensure that it can edit the
object and delink/ignore the message quietly if the type is not to its
liking. This allows the Local task to 'move' a remote task to different
objects cleanly.

Before sending Message_DoYourStuff with bit 4 set the local task should
broadcast  Message_UnhookMe to prevent more than one remote task attempting
to do in-place editing at once.

Before sending Message_DoYourStuff with bit 3 set the local task should
broadcast  Message_Deselect as the remote task in question wants to 'own'
the object. 

Message_Deselect(&83487) (Msg_Desel%) 
-------------------------------------

Broadcast by Local task when the object has been deleted.

The block pointed to by R1 contains: 
 
R1+20   Filetype of object.
R1+24   Address of object tag 

All Tasks interested in the object should close their window/abandon their
operations as the object in question has been removed from the PCA system
(usually because it has been deleted). Local tasks  must generate this
message when deleting an object, quitting etc. or remote tasks using the
object will crash. If the Local task is using PCASupport for tag generation
it should call SWI PCA_DeleteAndKill which will delete the tag and send this
message in one operation but only when the object really is being deleted.

Note: This implies that the remote task, on receipt of this message cannot
rely on more than the tag address as a key to the object. It _cannot_ access
the object data via the tag passed as SWI PCA_DeleteTag has already been
called (the address fields within the tag will contain -1 and the object
data itself may well have been discarded). This is unavoidable without a two
message (Message/Ack) deselection system which would be more difficuilt for
tasks to handle. Especially (as is often the case) if the local task is
about to quit. 

Message_DoneMyStuff(&83488) (Msg_Done%) 
---------------------------------------

Broadcast by a task when it has modified the object. All tasks accessing the
object other than the originator of the message should recognise this
message and redraw the object.

The block pointed to by R1 contains: 
 
R1+20   0
R1+24   Address of object tag
  
Use this message for 'whole object changed' operations which do not involve
changes to the object's basic structure (Eg. image filter of sprite).

Note: Receipt of this message by the Local task should not be taken as an
indication that the remote task is no longer interested in it. That is what
Message_UnhookMe is for. 

Message_Changed(&8348A) (Msg_Changed%) 
--------------------------------------

Broadcast by Local or Remote task when the object has changed (either in
size or its details). Task should act as if it had got a new DoYourStuff
message.

Broadcast by Remote task after it has changed the object's size. Local and
other interested Remote tasks will re-read the object's details and redraw
the object.

The block pointed to by R1 contains: 
 
R1+20   Filetype of object
R1+24   Address of object tag
R1+28   reserved - 0
R1+32   String. New name of object or zero for no change.
  
Note: Nothing about the standard prevents the object changing type (eg from
sprite to Drawfile). On receipt of this message please check the filetype
field as well as all necessary aspects of the object's data structure. If
the object is not to a Remote task's liking it should send Message_UnHook
and delink quietly. 

Message_ResizeRequest(&8348B) (Msg_Resize%) 
-------------------------------------------

Sent by Remote task to Local (task handle in R1+4 of DoYourStuff message).
If the Local task fails to deal successfully it will claim the message.

The block pointed to by R1 contains: 
 
R1+20   0
R1+24   Address of object tag
R1+28   reserved - 0
R1+32   New size. Total size of object structure
        (including header, offset to base etc.) if flags b1
        clear otherwise new size of object itself.
R1+36   Flags
               b0 set 'Resize associated objects as well'
               b1 set 'New Size is for object alone - does not include header.' 

If the Local task succeeds then it will send Message_ResizeAck (basically,
copy R1+8 to R1+12, put Message ResizeAck into R1+16, update R1+32 and
return to sender). On receipt of ResizeAck message the sender of
ResizeRequest should modify the object appropriately (for example, adding
rows/columns to a sprite). 

Notes:
 
You must be prepared for the resize request to fail in which case it is the
responsibility of the Local task to report to the user and the Remote task
to continue safely.

If the ResizeAck message returns to a Remote task you must check that the
field in R1+12 is equal to the MyRef generated by the Resize message you
sent to ensure that the ResizeAck is for the object you have requested be
resized. If it is, ensure that the object is in a renderable state before
the next Wimp_Poll by updating the relevant parts of the object's internal
data structure.

The local task's only modification to the data after a Resize is to write
new size fields where appropriate and to update the object's tag address
fields if the object moves. For sprites the new total area size should be
written into 'Base of data'+0 - it does not know what the Remote task is
going to do with the sprite and therefore cannot make any other
modifications to the data.

For data types which do not store size within their data structure then the
length field of the tag should also be modified (along with the address
fields if the object has to be moved).

After modifying the object the Remote task must broadcast Message_Changed . 
Composition will read bit zero of the flags word. If this bit is set, it
will resize masks associated with the sprite in question as well. The amount
by which masks will be resized is calculated from the resize-request for the
sprite itself. Other applications can ignore or act on this bit as they
wish. The task which requested the resize must be able to handle either
action.

Bit one of the flags word is intended to facilitate the resizing of paths in
Drawfiles and similar data structures under the PCA though no code has been
written to do this yet.


Resize Summary
==============

This is what you do to change the size of an object you are editing: 

From a Remote task's point of view: 
-----------------------------------

Send Message_ResizeRequest and keep myref generated from the message. On
receipt of ResizeAck check myref, modify object data and broadcast
Message_Changed .  

From the Local task's point of view: 
------------------------------------

On receipt of Message_ResizeRequest resize object if possible, update the
objects tag anchors and send ResizeAck otherwise claim the message and
report an error to user. 

Both Remote and Local tasks:
---------------------------- 

On receipt of Message_Changed re-read the object header as if it was newly
created and redraw the entire object. (You may need to regenerate an area of
your window the size of the old object - remember the new object may occupy
less screen area). 

Resize speed issues 
-------------------

When the object being resized is very large, VM (Virtual Memory)is being
used, or the resize requests are frequent, there may be a performance issue.
In such situations the Local task should consider moving the object to the
top of its data storage area to prevent repeated memory moving operations.
In applications where many small resize requests are likely then consider
employing a tag extension system similar to the one defined above for text
files to reduce the frequency of the resize requests. 

Message_UpdateArea(&8348C) (Msg_Uparea%) 
----------------------------------------

Broadcast by task when it has modified part of an object. Apps interested in
the object should redraw the appropriate area of the object as quickly as
possible if they have a window onto the object open.

The block pointed to by R1 contains: 
 
R1+20   Format of subsequent data (0)
R1+24   Address of object tag
R1+28   Xlow  (OS units at 1:1 scale)
R1+32   Ylow  (OS units at 1:1 scale)
R1+36   Xhi   (OS units at 1:1 scale)
R1+40   Yhi   (OS units at 1:1 scale) 

where coordinates are relative to the bottom left of the object.

Currently this is the only format supported by code (working with bitmap
sprites).

Other proposed formats are as follows: 
 
R1+20   Format of subsequent data (1)
R1+24   Address of object tag
R1+28   Xlow (Draw units = OS units <<8)
R1+32   Ylow (Draw units = OS units <<8)
R1+36   Xhi  (Draw units = OS units <<8)
R1+40   Yhi  (Draw units = OS units <<8) 

where coordinates are relative to the bottom left of the object. 
 
R1+20   Format of subsequent data (2)
R1+24   Address of object tag
R1+28   Xlow (Draw units = OS units <<8)
R1+32   Ylow (Draw units = OS units <<8)
R1+36   Xhi  (Draw units = OS units <<8)
R1+40   Yhi  (Draw units = OS units <<8) 

where coordinates are relative to the top left of the object.

If you have anyother suggestions please contact Clares or the author. 

Message_ResizeAck(&8348D) (Msg_ResizeAck%) 
------------------------------------------

Sent by Local task when a resize request has succeeded. On receipt by a
Remote task, check that R1+12 is the myref generated from
Message_ResizeRequest before modifying the object data structure and
broadcasting Message_Changed . 

The block pointed to by R1 contains: 
 
R1+20   reserved - 0
R1+24   Address of object tag
R1+28   reserved - 0
R1+32   New size allocated to object
R1+36   Flags
  
Message_MiscOp(&8348E) (Msg_Misc%) 
----------------------------------

This message is designed to provide a private interface option for PCA
programs without them having to request other message allocations from
Acorn.

The block pointed to by R1 contains: 
 
R1+20   Sub-reason code 
- other data dependant on sub-reason code.

The sub-reason codes available to application developers are allocated in
line with SWI and Message blocks - if you have one of these then those
values may be used by your programs. Where appropriate, please make details
of your messages available to the PCA community by sending them to Clares
for distribution.

Currently, only two sub-reasons are defined for use with Composition. The
current format of these is given below but is subject to change. Please
contact Clares before releasing programs which rely on it: 

SubReason_GiveAssociatedData (&83480) 
-------------------------------------

Broadcast by remote plug-in when it would like to know more about the
object.

The block pointed to by R1 contains: 
 
        R1+24   Address of object tag 

SubReason_AssociatedDataCompo (&83481) 

Sent by Compo to Remote which broadcast GiveAssociatedData containing a tag
pointing to a Compo object.

The block pointed to by R1 contains: 
 
        R1+24   Address of object tag
        R1+28   reserved - 0
        R1+32   two eight bit and one sixteen bit fields
                bits 0-7     Masks in use by object
                bits 8-15    Format of subsequent data (zero)
                bits 16-31   Reserved
        R1+36   Reserved (0)
        R1+40   Blend mask address or zero    = no Blend mask
        R1+44   Tint mask address or zero     = no Tint mask
        R1+48   Curve mask address or zero    = no Curve mask
        R1+52   Displace mask address or zero = no Displace mask
        R1+56   Shadow mask address or zero   = no Shadow mask
        R1+60   Reserved
        R1+64   Reserved
        R1+68   Opacity of object (65536=solid 0=transparent)
        R1+72   Math type in use for object
  
Notes: The 'mask address' passed is the address of the base of a sprite area
containing one eight bit greyscale sprite (at address+address!8). The size
of a mask should not be assumed to be the same as that of the object - read
it from the mask sprite data or use OS_SpriteOp to extract it.

The data returned by this message is fragile - re-read whenever you want to
make use of it. 

Message_Info(&8348F) (Msg_Info%) 
--------------------------------

Sent by Local to Remote application when the info button in the pop-up is
clicked.

The block pointed to by R1 contains: 
 
R1+20   0 

Remote application should write a suitable info string into +20, change the
message size and return the message to the sender.

Example info strings:

"Image Filter. No image linked at the moment."

"Image Filter. Image 'Face' linked at the moment." 


Message_ObjectPosition(&83490) (Msg_ObjPos%) 
--------------------------------------------

This message is generated by the Local application after receipt of
Message_HookMe , object repositioning operations and window open operations,
if the Local application supports 'Inplace editing'.

The block pointed to by R1 contains: 
 
R1+20   0
R1+24   Address of object tag
R1+28   Y scale of object in Local window (65536=1:1 or 100%)
R1+32   Xlow of object on screen in 'Local' window.
R1+36   Ylow of object on screen in 'Local' window.
R1+40   Handle of 'Local' window.
R1+44   Handle of Local windows toolbar window (or -1 if no toolbar)
R1+48   X scale factor of object in Local window (16.16 format eg 65536=1:1 or 100%)
R1+52   Xlow of object on screen in Local window. (unlimited)
R1+56   Ylow of object on screen in Local window. (unlimited)
  
On receipt, the Remote task should open its toolbar/infobar relative to the
positions in R1+32 and R1+36 behind the window handle at R1+44. The
coordinates passed in R1+32 and R1+36 should be limited to the windows
visible area (by the Local task) while those at +52 and +56 should not. 

The information at R1+28 and R1+48 onwards is for use by the Remote task
during mouse click operations on the object. To convert mouse coordinates
read directly it should subtract the values at R1+52,R1+56 from the raw
mousex and mousey coordinates, and then scale according to the value in
R1+48. 

The X and Y scale factors are in 16.16 format. To convert a scale factor
into this format, multiply by 1 << 16. For example, 100% = a scale factor of
one and is therefore (1 << 16) * 1 which is 65536 or &10000. 150% = a scale
factor of 1.5 and is therefore (1 << 16) * 1.5 which is 98304 or &18000.

See the remote painting code (DEFPROCremote_win) in !Spaint for a practical
example of what you should do. 

Message_HookMe(&83491) (Msg_Hook%) 
----------------------------------

This message is sent by the Remote task to the Local task. It indicates to
the Local task that it should begin intercepting mouse button and other Wimp
events to the object and send them to the Remote task. On receipt, the Local
task should create a trap icon over the object (using the button type in
r1+28) and send Message_ObjectPosition.

The block pointed to by R1 contains: 
 
R1+20   0
R1+24   Address of object tag
R1+28   bits 0-27 Flags - reserved and set to zero.
        bits 28-31 Window 'work area' button type to use for trap icon.
R1+32   Window handle
R1+36   String. indirection string for icon or Null (&0) 

To make life easier for the remote task the Local task should also take note
of the window handle at R1+32 and insert that value into the window handle
field when passing on Wimp messages. This allows the remote task to use much
of the same code to deal with remotely generated messages and messages to
their own window.

The optional indirection string at R1+36 is intended to allow for adding a
mouse pointer change when entering in-place edited objects. Take care with
this string as certain settings can disrupt the Local task's message
trapping. This extension is optional. Some local tasks may not support it so
do not rely on it.

If the remote task is already editing an object in-place (and it is going to
replace it) then it should send Message_Unhook to the local task previously
being worked with so that it deletes its trap icon.

Please see the section below on In-place editing for details of the best
method of trapping messages and the alterations which should be made before
forwarding them. 

Message_UnhookMe(&83492) (Msg_Unhook%) 
--------------------------------------

This message is sent by a remote task to the Local task (or local to remote)
when it wants to 'unhook' from the object.

The block pointed to by R1 contains: 
 
R1+20   0
R1+24   Address of object tag
R1+28   reserved  - 0
R1+32   Window handle
R1+36   Unhook 'type'
  
This message should be used by a Remote task to indicate its lack of
interest in an object. After sending this message the Remote task should
forget any references to the object and close its toolbar and/or window.

Little action need be taken at the Local end on receipt of this message
unless 'Inplace editing' is going on between the tasks in which case it
should remove the traps on Button click messages etc for the object. If the
Local task wishes to be efficient in its generation of PCA messages then it
should keep a counter for each object in the PCA system, increase the
counter on each call to Message_DoYourStuff and decrease it on each receipt
of Message_UnHook. Then PCA messages need only be generated in response to
changes made by the Local task if the objects counter is greater than zero.
When the counter reaches zero the Local task should broadcast
Message_Deselect as a saftey measure to ensure that all Remote tasks stop
using the object.

The 'unhook type' at R1+36 currently has two defined values: 
 
R1+36   0 'Unhook' is temporary
          (used by Compo to support the 'Track selected'
          preference option)
R1+36   1 'Unhook' is permanent - forget about this PCA. 

All values other than zero should currently be treated as 'permanent'.
00000000  50 6c 75 67 20 49 6e 20  43 6f 6d 70 6c 69 61 6e  |Plug In Complian|
00000010  74 20 41 70 70 6c 69 63  61 74 69 6f 6e 20 70 72  |t Application pr|
00000020  6f 74 6f 63 6f 6c 0a 3d  3d 3d 3d 3d 3d 3d 3d 3d  |otocol.=========|
00000030  3d 3d 3d 3d 3d 3d 3d 3d  3d 3d 3d 3d 3d 3d 3d 3d  |================|
00000040  3d 3d 3d 3d 3d 3d 3d 3d  3d 3d 3d 3d 3d 0a 0a 0a  |=============...|
00000050  50 6c 75 67 20 49 6e 20  43 6f 6d 70 6c 69 61 6e  |Plug In Complian|
00000060  74 20 41 70 70 6c 69 63  61 74 69 6f 6e 20 4d 65  |t Application Me|
00000070  73 73 61 67 65 20 73 70  65 63 69 66 69 63 61 74  |ssage specificat|
00000080  69 6f 6e 0a 3d 3d 3d 3d  3d 3d 3d 3d 3d 3d 3d 3d  |ion.============|
00000090  3d 3d 3d 3d 3d 3d 3d 3d  3d 3d 3d 3d 3d 3d 3d 3d  |================|
*
000000b0  3d 3d 3d 3d 3d 3d 3d 0a  0a 0a 41 75 74 68 6f 72  |=======...Author|
000000c0  20 3a 20 52 6f 62 20 44  61 76 69 73 6f 6e 20 28  | : Rob Davison (|
000000d0  72 64 61 76 69 73 6f 6e  40 78 74 72 61 2e 63 6f  |rdavison@xtra.co|
000000e0  2e 6e 7a 29 0a 44 61 74  65 20 3a 20 32 38 2f 30  |.nz).Date : 28/0|
000000f0  38 2f 39 36 20 53 74 61  74 75 73 20 3a 20 52 65  |8/96 Status : Re|
00000100  6c 65 61 73 65 20 31 0a  0a 4e 6f 74 65 73 3a 20  |lease 1..Notes: |
00000110  46 69 6c 65 74 79 70 65  20 69 73 20 64 69 76 69  |Filetype is divi|
00000120  64 65 64 20 69 6e 74 6f  20 74 77 6f 20 66 69 65  |ded into two fie|
00000130  6c 64 73 20 77 69 74 68  20 74 68 69 73 20 66 6f  |lds with this fo|
00000140  72 6d 61 74 3a 20 0a 20  0a 20 0a 20 20 20 20 20  |rmat: . . .     |
00000150  20 20 20 20 20 20 62 20  30 2d 31 32 20 52 49 53  |      b 0-12 RIS|
00000160  43 20 4f 53 20 66 69 6c  65 74 79 70 65 0a 20 20  |C OS filetype.  |
00000170  20 20 20 20 20 20 20 20  20 62 31 33 2d 33 31 20  |         b13-31 |
00000180  72 65 73 65 72 76 65 64  20 2d 20 7a 65 72 6f 2e  |reserved - zero.|
00000190  0a 20 20 0a 4f 6e 20 72  65 61 64 69 6e 67 2c 20  |.  .On reading, |
000001a0  70 6c 65 61 73 65 20 6d  61 73 6b 20 62 69 74 73  |please mask bits|
000001b0  20 31 33 2d 33 31 20 6f  75 74 20 62 65 66 6f 72  | 13-31 out befor|
000001c0  65 20 63 68 65 63 6b 69  6e 67 20 74 68 65 20 66  |e checking the f|
000001d0  69 6c 65 74 79 70 65 2e  0a 0a 53 74 72 69 6e 67  |iletype...String|
000001e0  73 20 61 72 65 20 6e 75  6c 6c 20 74 65 72 6d 69  |s are null termi|
000001f0  6e 61 74 65 64 20 62 75  74 20 73 75 70 70 6f 72  |nated but suppor|
00000200  74 69 6e 67 20 61 70 70  6c 69 63 61 74 69 6f 6e  |ting application|
00000210  73 20 73 68 6f 75 6c 64  20 61 63 63 65 70 74 20  |s should accept |
00000220  43 74 72 6c 2e 0a 74 65  72 6d 69 6e 61 74 65 64  |Ctrl..terminated|
00000230  20 28 41 53 43 49 49 20  30 2d 33 31 29 2e 0a 0a  | (ASCII 0-31)...|
00000240  27 41 64 64 72 65 73 73  20 6f 66 20 62 61 73 65  |'Address of base|
00000250  27 20 69 73 20 74 68 65  20 62 65 67 69 6e 6e 69  |' is the beginni|
00000260  6e 67 20 6f 66 20 74 68  65 20 64 61 74 61 20 73  |ng of the data s|
00000270  74 72 75 63 74 75 72 65  20 77 68 69 63 68 20 63  |tructure which c|
00000280  6f 6e 74 61 69 6e 73 20  74 68 65 0a 6f 62 6a 65  |ontains the.obje|
00000290  63 74 2e 0a 0a 27 4f 66  66 73 65 74 20 74 6f 20  |ct...'Offset to |
000002a0  6f 62 6a 65 63 74 27 20  69 73 20 74 68 65 20 6f  |object' is the o|
000002b0  66 66 73 65 74 20 66 72  6f 6d 20 74 68 65 20 41  |ffset from the A|
000002c0  64 64 72 65 73 73 20 6f  66 20 62 61 73 65 20 74  |ddress of base t|
000002d0  6f 20 74 68 65 0a 6f 62  6a 65 63 74 2d 6f 66 2d  |o the.object-of-|
000002e0  69 6e 74 65 72 65 73 74  0a 0a 46 6f 72 20 65 78  |interest..For ex|
000002f0  61 6d 70 6c 65 2c 20 74  68 65 20 27 4f 66 66 73  |ample, the 'Offs|
00000300  65 74 20 74 6f 20 6f 62  6a 65 63 74 27 20 6f 66  |et to object' of|
00000310  20 61 20 73 70 72 69 74  65 20 69 73 20 74 68 65  | a sprite is the|
00000320  20 6f 66 66 73 65 74 20  74 6f 20 74 68 65 20 73  | offset to the s|
00000330  70 72 69 74 65 0a 69 74  73 65 6c 66 20 28 62 61  |prite.itself (ba|
00000340  73 65 21 38 20 66 6f 72  20 74 68 65 20 66 69 72  |se!8 for the fir|
00000350  73 74 20 73 70 72 69 74  65 20 69 6e 20 61 20 73  |st sprite in a s|
00000360  70 72 69 74 65 20 61 72  65 61 29 2e 20 54 68 65  |prite area). The|
00000370  20 27 41 64 64 72 65 73  73 20 6f 66 20 62 61 73  | 'Address of bas|
00000380  65 27 0a 69 73 20 74 68  65 20 61 64 64 72 65 73  |e'.is the addres|
00000390  73 20 6f 66 20 74 68 65  20 73 70 72 69 74 65 20  |s of the sprite |
000003a0  61 72 65 61 20 69 6e 20  77 68 69 63 68 20 74 68  |area in which th|
000003b0  65 20 73 70 72 69 74 65  20 72 65 73 69 64 65 73  |e sprite resides|
000003c0  2e 20 46 6f 72 20 6f 62  6a 65 63 74 73 0a 77 68  |. For objects.wh|
000003d0  65 72 65 20 74 68 65 20  6f 66 66 73 65 74 20 68  |ere the offset h|
000003e0  61 73 20 6e 6f 20 6d 65  61 6e 69 6e 67 20 74 68  |as no meaning th|
000003f0  65 20 6f 66 66 73 65 74  20 74 6f 20 74 68 65 20  |e offset to the |
00000400  6f 62 6a 65 63 74 20 6d  75 73 74 20 62 65 20 7a  |object must be z|
00000410  65 72 6f 2e 0a 0a 54 68  65 20 50 43 41 20 72 65  |ero...The PCA re|
00000420  66 65 72 65 6e 63 65 73  20 6f 62 6a 65 63 74 73  |ferences objects|
00000430  20 75 73 69 6e 67 20 27  74 61 67 73 27 2e 20 45  | using 'tags'. E|
00000440  61 63 68 20 74 61 67 20  69 73 20 75 73 75 61 6c  |ach tag is usual|
00000450  6c 79 20 31 36 20 62 79  74 65 73 20 69 6e 0a 6c  |ly 16 bytes in.l|
00000460  65 6e 67 74 68 20 61 6e  64 20 69 74 73 20 66 6f  |ength and its fo|
00000470  72 6d 61 74 20 69 73 20  64 65 66 69 6e 65 64 20  |rmat is defined |
00000480  74 68 75 73 3a 20 0a 20  0a 74 61 67 2b 30 20 20  |thus: . .tag+0  |
00000490  3d 20 41 64 64 72 65 73  73 20 6f 66 20 62 61 73  |= Address of bas|
000004a0  65 2e 20 28 61 6e 63 68  6f 72 29 0a 74 61 67 2b  |e. (anchor).tag+|
000004b0  34 20 20 3d 20 4f 66 66  73 65 74 20 74 6f 20 6f  |4  = Offset to o|
000004c0  62 6a 65 63 74 20 66 72  6f 6d 20 62 61 73 65 2e  |bject from base.|
000004d0  0a 74 61 67 2b 38 20 20  3d 20 4c 65 6e 67 74 68  |.tag+8  = Length|
000004e0  20 6f 66 20 6f 62 6a 65  63 74 2e 20 28 69 66 20  | of object. (if |
000004f0  61 70 70 6c 69 63 61 62  6c 65 20 2d 20 73 65 65  |applicable - see|
00000500  20 6e 6f 74 65 20 62 65  6c 6f 77 29 0a 74 61 67  | note below).tag|
00000510  2b 31 32 20 3d 20 45 78  74 65 6e 73 69 6f 6e 20  |+12 = Extension |
00000520  73 69 7a 65 20 61 6e 64  20 66 6c 61 67 73 0a 20  |size and flags. |
00000530  20 20 20 20 20 20 20 20  20 20 20 20 20 20 62 30  |              b0|
00000540  2d 31 35 20 54 68 65 73  65 20 62 69 74 73 20 61  |-15 These bits a|
00000550  72 65 20 74 6f 20 70 72  6f 76 69 64 65 20 66 6f  |re to provide fo|
00000560  72 20 65 78 70 61 6e 73  69 6f 6e 20 6f 66 20 74  |r expansion of t|
00000570  68 65 20 73 69 7a 65 20  6f 66 20 61 0a 20 20 20  |he size of a.   |
00000580  20 20 20 20 20 20 20 20  20 20 20 20 74 61 67 20  |            tag |
00000590  62 79 20 75 70 20 74 6f  20 36 35 35 33 32 20 62  |by up to 65532 b|
000005a0  79 74 65 73 2e 20 54 79  70 69 63 61 6c 6c 79 2c  |ytes. Typically,|
000005b0  20 74 68 69 73 20 69 73  20 66 6f 72 20 61 70 70  | this is for app|
000005c0  2e 20 6f 72 20 6f 62 6a  65 63 74 0a 20 20 20 20  |. or object.    |
000005d0  20 20 20 20 20 20 20 20  20 20 20 73 70 65 63 69  |           speci|
000005e0  66 69 63 20 64 61 74 61  2e 20 54 68 69 73 20 64  |fic data. This d|
000005f0  6f 63 75 6d 65 6e 74 20  73 70 65 63 69 66 69 65  |ocument specifie|
00000600  73 20 74 77 6f 20 65 78  74 65 6e 73 69 6f 6e 73  |s two extensions|
00000610  20 74 6f 20 73 68 6f 77  0a 20 20 20 20 20 20 20  | to show.       |
00000620  20 20 20 20 20 20 20 20  79 6f 75 20 68 6f 77 20  |        you how |
00000630  69 74 27 73 20 64 6f 6e  65 2e 20 44 65 74 61 69  |it's done. Detai|
00000640  6c 73 20 62 65 6c 6f 77  2e 0a 20 0a 20 20 20 20  |ls below.. .    |
00000650  20 20 20 20 20 20 20 20  20 20 20 62 31 36 2d 33  |           b16-3|
00000660  31 20 28 72 65 73 65 72  76 65 64 2c 20 73 65 74  |1 (reserved, set|
00000670  20 74 6f 20 7a 65 72 6f  29 0a 20 0a 54 68 65 20  | to zero). .The |
00000680  66 69 72 73 74 20 74 77  6f 20 76 61 6c 75 65 73  |first two values|
00000690  20 69 6e 20 61 20 74 61  67 20 61 72 65 20 6d 6f  | in a tag are mo|
000006a0  73 74 20 69 6d 70 6f 72  74 61 6e 74 20 61 73 20  |st important as |
000006b0  74 68 65 79 20 61 72 65  20 70 6f 69 6e 74 65 72  |they are pointer|
000006c0  73 20 74 6f 20 74 68 65  0a 61 64 64 72 65 73 73  |s to the.address|
000006d0  20 6f 66 20 74 68 65 20  6f 62 6a 65 63 74 20 61  | of the object a|
000006e0  6e 64 20 74 68 65 20 62  61 73 65 20 6f 66 20 74  |nd the base of t|
000006f0  68 65 20 64 61 74 61 20  73 74 72 75 63 74 75 72  |he data structur|
00000700  65 20 63 6f 6e 74 61 69  6e 69 6e 67 20 69 74 2e  |e containing it.|
00000710  0a 52 65 6d 6f 74 65 20  74 61 73 6b 73 20 6d 75  |.Remote tasks mu|
00000720  73 74 20 2a 61 6c 77 61  79 73 2a 20 72 65 66 65  |st *always* refe|
00000730  72 65 6e 63 65 20 61 6e  20 6f 62 6a 65 63 74 20  |rence an object |
00000740  62 79 20 72 65 61 64 69  6e 67 20 74 68 65 73 65  |by reading these|
00000750  20 76 61 6c 75 65 73 2e  0a 47 65 6e 65 72 61 6c  | values..General|
00000760  6c 79 20 73 70 65 61 6b  69 6e 67 2c 20 52 65 6d  |ly speaking, Rem|
00000770  6f 74 65 20 74 61 73 6b  73 20 63 61 6e 20 75 73  |ote tasks can us|
00000780  75 61 6c 6c 79 20 74 72  75 73 74 20 74 68 65 20  |ually trust the |
00000790  61 64 64 72 65 73 73 20  61 6e 64 20 6f 66 66 73  |address and offs|
000007a0  65 74 0a 75 6e 74 69 6c  20 74 68 65 20 6e 65 78  |et.until the nex|
000007b0  74 20 57 69 6d 70 5f 50  6f 6c 6c 20 62 75 74 20  |t Wimp_Poll but |
000007c0  69 66 20 69 6e 20 64 6f  75 62 74 2c 20 72 65 2d  |if in doubt, re-|
000007d0  72 65 61 64 20 69 74 20  66 72 6f 6d 20 74 68 65  |read it from the|
000007e0  20 74 61 67 2e 20 54 68  65 20 4c 6f 63 61 6c 0a  | tag. The Local.|
000007f0  74 61 73 6b 20 68 61 73  20 74 68 65 20 72 65 73  |task has the res|
00000800  70 6f 6e 73 69 62 69 6c  69 74 79 20 6f 66 20 63  |ponsibility of c|
00000810  72 65 61 74 69 6e 67 20  74 68 65 20 6f 62 6a 65  |reating the obje|
00000820  63 74 27 73 20 74 61 67  20 77 68 65 6e 20 74 68  |ct's tag when th|
00000830  65 20 6f 62 6a 65 63 74  0a 6a 6f 69 6e 73 20 74  |e object.joins t|
00000840  68 65 20 50 43 41 20 73  79 73 74 65 6d 2c 20 75  |he PCA system, u|
00000850  70 64 61 74 69 6e 67 20  74 68 65 20 72 65 6c 65  |pdating the rele|
00000860  76 61 6e 74 20 66 69 65  6c 64 73 20 69 6e 20 74  |vant fields in t|
00000870  68 65 20 74 61 67 20 69  66 20 74 68 65 20 6f 62  |he tag if the ob|
00000880  6a 65 63 74 0a 69 73 20  6d 6f 76 65 64 20 6f 72  |ject.is moved or|
00000890  20 72 65 73 69 7a 65 64  20 61 6e 64 20 64 69 73  | resized and dis|
000008a0  63 61 72 64 69 6e 67 20  74 68 65 20 74 61 67 20  |carding the tag |
000008b0  77 68 65 6e 20 69 74 20  69 73 20 73 75 72 65 20  |when it is sure |
000008c0  69 74 20 69 73 20 6e 6f  20 6c 6f 6e 67 65 72 0a  |it is no longer.|
000008d0  6e 65 65 64 65 64 2e 20  54 61 67 73 20 6d 75 73  |needed. Tags mus|
000008e0  74 20 74 68 65 6d 73 65  6c 76 65 73 20 62 65 20  |t themselves be |
000008f0  69 6e 20 61 20 63 6f 6d  6d 6f 6e 20 6d 65 6d 6f  |in a common memo|
00000900  72 79 20 61 72 65 61 20  61 6e 64 20 74 68 65 79  |ry area and they|
00000910  20 6d 75 73 74 20 6e 6f  74 0a 6d 6f 76 65 20 64  | must not.move d|
00000920  75 72 69 6e 67 20 74 68  65 20 6c 69 66 65 74 69  |uring the lifeti|
00000930  6d 65 20 6f 66 20 74 68  65 20 6f 62 6a 65 63 74  |me of the object|
00000940  20 69 6e 20 74 68 65 20  50 43 41 20 73 79 73 74  | in the PCA syst|
00000950  65 6d 2e 20 43 6c 61 72  65 73 20 70 72 6f 76 69  |em. Clares provi|
00000960  64 65 20 61 0a 73 6d 61  6c 6c 20 6d 6f 64 75 6c  |de a.small modul|
00000970  65 20 63 61 6c 6c 65 64  20 27 50 43 41 53 75 70  |e called 'PCASup|
00000980  70 6f 72 74 27 20 77 68  69 63 68 20 6d 61 79 20  |port' which may |
00000990  62 65 20 66 72 65 65 6c  79 20 64 69 73 74 72 69  |be freely distri|
000009a0  62 75 74 65 64 20 62 79  0a 72 65 67 69 73 74 65  |buted by.registe|
000009b0  72 65 64 20 50 43 41 20  64 65 76 65 6c 6f 70 65  |red PCA develope|
000009c0  72 73 20 74 6f 20 66 61  63 69 6c 69 74 61 74 65  |rs to facilitate|
000009d0  20 74 68 65 20 63 72 65  61 74 69 6f 6e 20 6f 66  | the creation of|
000009e0  20 50 43 41 20 74 61 67  73 20 66 6f 72 0a 61 70  | PCA tags for.ap|
000009f0  70 6c 69 63 61 74 69 6f  6e 73 20 77 68 69 63 68  |plications which|
00000a00  20 64 6f 20 6e 6f 74 20  77 61 6e 74 20 74 6f 20  | do not want to |
00000a10  63 72 65 61 74 65 20 74  61 67 73 20 74 68 65 6d  |create tags them|
00000a20  73 65 6c 76 65 73 2e 0a  0a 4e 6f 74 65 73 3a 0a  |selves...Notes:.|
00000a30  0a 4d 61 6e 79 20 6f 62  6a 65 63 74 73 20 73 74  |.Many objects st|
00000a40  6f 72 65 20 74 68 65 69  72 20 6c 65 6e 67 74 68  |ore their length|
00000a50  20 77 69 74 68 69 6e 20  74 68 65 20 6f 62 6a 65  | within the obje|
00000a60  63 74 20 64 61 74 61 20  73 74 72 75 63 74 75 72  |ct data structur|
00000a70  65 20 69 74 73 65 6c 66  20 61 6e 64 0a 69 6e 20  |e itself and.in |
00000a80  74 68 61 74 20 63 61 73  65 20 79 6f 75 20 6d 75  |that case you mu|
00000a90  73 74 20 75 73 65 20 74  68 65 20 76 61 6c 75 65  |st use the value|
00000aa0  20 73 74 6f 72 65 64 20  77 69 74 68 69 6e 20 74  | stored within t|
00000ab0  68 65 20 6f 62 6a 65 63  74 27 73 20 64 61 74 61  |he object's data|
00000ac0  20 69 6e 73 74 65 61 64  0a 6f 66 20 72 65 6c 79  | instead.of rely|
00000ad0  69 6e 67 20 6f 6e 20 74  68 65 20 6c 65 6e 67 74  |ing on the lengt|
00000ae0  68 20 66 69 65 6c 64 20  69 6e 20 74 68 65 20 74  |h field in the t|
00000af0  61 67 2e 20 49 74 20 69  73 20 69 6e 74 65 6e 64  |ag. It is intend|
00000b00  65 64 20 66 6f 72 20 6f  62 6a 65 63 74 20 74 79  |ed for object ty|
00000b10  70 65 73 0a 77 68 69 63  68 20 69 6e 63 6c 75 64  |pes.which includ|
00000b20  65 20 6e 6f 20 72 65 63  6f 72 64 20 6f 66 20 74  |e no record of t|
00000b30  68 65 69 72 20 73 69 7a  65 20 28 74 65 78 74 20  |heir size (text |
00000b40  66 6f 72 20 65 78 61 6d  70 6c 65 29 2e 0a 0a 54  |for example)...T|
00000b50  61 67 20 65 78 74 65 6e  73 69 6f 6e 73 20 6d 75  |ag extensions mu|
00000b60  73 74 20 61 64 68 65 72  65 20 74 6f 20 74 68 65  |st adhere to the|
00000b70  20 66 6f 6c 6c 6f 77 69  6e 67 20 73 74 61 6e 64  | following stand|
00000b80  61 72 64 3a 20 0a 20 0a  74 61 67 2b 31 32 2e 62  |ard: . .tag+12.b|
00000b90  30 2d 31 35 20 20 20 3d  20 28 62 79 74 65 73 20  |0-15   = (bytes |
00000ba0  72 65 71 75 69 72 65 64  2b 34 29 2e 20 4d 75 6c  |required+4). Mul|
00000bb0  74 69 70 6c 65 73 20 6f  66 20 34 20 62 79 74 65  |tiples of 4 byte|
00000bc0  73 20 6f 6e 6c 79 2e 0a  74 61 67 2b 31 36 20 20  |s only..tag+16  |
00000bd0  20 20 20 20 20 20 20 20  20 65 78 74 65 6e 73 69  |         extensi|
00000be0  6f 6e 20 69 64 2e 20 54  79 70 65 73 20 30 2d 26  |on id. Types 0-&|
00000bf0  66 66 66 20 61 72 65 20  72 65 73 65 72 76 65 64  |fff are reserved|
00000c00  20 66 6f 72 20 43 6c 61  72 65 73 20 50 43 41 2e  | for Clares PCA.|
00000c10  0a 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |.               |
00000c20  20 20 4f 74 68 65 72 20  76 61 6c 75 65 73 20 61  |  Other values a|
00000c30  72 65 20 61 6c 6c 6f 63  61 74 65 64 20 69 6e 20  |re allocated in |
00000c40  6c 69 6e 65 20 77 69 74  68 20 53 57 49 2f 4d 65  |line with SWI/Me|
00000c50  73 73 61 67 65 0a 20 20  20 20 20 20 20 20 20 20  |ssage.          |
00000c60  20 20 20 20 20 20 20 63  68 75 6e 6b 20 6e 75 6d  |       chunk num|
00000c70  62 65 72 73 20 66 6f 72  20 61 70 70 6c 69 63 61  |bers for applica|
00000c80  74 69 6f 6e 20 64 65 76  65 6c 6f 70 65 72 73 2e  |tion developers.|
00000c90  0a 28 65 78 74 65 6e 64  65 64 20 64 61 74 61 20  |.(extended data |
00000ca0  64 65 70 65 6e 64 61 6e  74 20 6f 6e 20 74 61 67  |dependant on tag|
00000cb0  20 69 64 29 20 0a 0a 54  6f 20 67 69 76 65 20 61  | id) ..To give a|
00000cc0  6e 20 65 78 61 6d 70 6c  65 20 6f 66 20 61 20 74  |n example of a t|
00000cd0  61 67 20 65 78 74 65 6e  73 69 6f 6e 20 77 65 20  |ag extension we |
00000ce0  64 65 66 69 6e 65 20 74  77 6f 20 74 61 67 20 65  |define two tag e|
00000cf0  78 74 65 6e 73 69 6f 6e  73 20 77 68 69 63 68 20  |xtensions which |
00000d00  6d 61 79 0a 62 65 20 75  73 65 64 20 77 69 74 68  |may.be used with|
00000d10  20 50 43 41 20 74 65 78  74 20 6f 62 6a 65 63 74  | PCA text object|
00000d20  73 2e 20 0a 20 0a 20 0a  53 69 6d 70 6c 65 20 74  |s. . . .Simple t|
00000d30  65 78 74 20 6f 62 6a 65  63 74 0a 2d 2d 2d 2d 2d  |ext object.-----|
00000d40  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 0a 0a 74  |-------------..t|
00000d50  61 67 2b 31 32 20 38 0a  74 61 67 2b 31 36 20 26  |ag+12 8.tag+16 &|
00000d60  46 46 46 0a 74 61 67 2b  32 30 20 6c 65 6e 67 74  |FFF.tag+20 lengt|
00000d70  68 20 6f 66 20 62 75 66  66 65 72 20 61 6c 6c 6f  |h of buffer allo|
00000d80  63 61 74 65 64 20 74 6f  20 6f 62 6a 65 63 74 0a  |cated to object.|
00000d90  20 20 20 20 20 20 20 28  69 65 20 74 68 65 20 72  |       (ie the r|
00000da0  65 6d 6f 74 65 20 74 61  73 6b 20 63 61 6e 20 65  |emote task can e|
00000db0  78 74 65 6e 64 20 74 68  65 20 73 69 7a 65 20 6f  |xtend the size o|
00000dc0  66 20 74 68 65 20 74 65  78 74 20 28 61 73 20 67  |f the text (as g|
00000dd0  69 76 65 6e 20 61 74 20  74 61 67 2b 38 29 0a 20  |iven at tag+8). |
00000de0  20 20 20 20 20 20 75 6e  74 69 6c 20 69 74 73 20  |      until its |
00000df0  73 69 7a 65 20 72 65 61  63 68 65 73 20 74 61 67  |size reaches tag|
00000e00  2b 32 30 20 62 79 74 65  73 20 62 65 66 6f 72 65  |+20 bytes before|
00000e10  20 63 61 6c 6c 69 6e 67  20 4d 65 73 73 61 67 65  | calling Message|
00000e20  5f 52 65 73 69 7a 65 2e  0a 20 0a 45 64 69 74 65  |_Resize.. .Edite|
00000e30  64 20 74 65 78 74 20 6f  62 6a 65 63 74 0a 2d 2d  |d text object.--|
00000e40  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00000e50  0a 0a 74 61 67 2b 31 32  20 31 36 0a 74 61 67 2b  |..tag+12 16.tag+|
00000e60  31 36 20 26 46 46 45 0a  74 61 67 2b 32 30 20 6c  |16 &FFE.tag+20 l|
00000e70  65 6e 67 74 68 20 6f 66  20 62 75 66 66 65 72 20  |ength of buffer |
00000e80  66 6f 72 20 66 69 72 73  74 20 63 68 75 6e 6b 0a  |for first chunk.|
00000e90  74 61 67 2b 32 34 20 6f  66 66 73 65 74 20 74 6f  |tag+24 offset to|
00000ea0  20 72 65 73 74 20 6f 66  20 74 65 78 74 20 66 72  | rest of text fr|
00000eb0  6f 6d 20 6f 62 6a 65 63  74 20 62 61 73 65 0a 74  |om object base.t|
00000ec0  61 67 2b 32 38 20 6c 65  6e 67 74 68 20 6f 66 20  |ag+28 length of |
00000ed0  72 65 73 74 20 6f 66 20  74 65 78 74 20 0a 0a 45  |rest of text ..E|
00000ee0  64 69 74 65 64 20 74 65  78 74 20 6f 62 6a 65 63  |dited text objec|
00000ef0  74 73 20 61 72 65 20 73  70 6c 69 74 20 69 6e 74  |ts are split int|
00000f00  6f 20 74 77 6f 20 73 65  70 61 72 61 74 65 20 70  |o two separate p|
00000f10  61 72 74 73 2c 20 74 68  65 20 70 6f 69 6e 74 65  |arts, the pointe|
00000f20  72 20 74 6f 20 62 61 73  65 0a 61 74 20 74 68 65  |r to base.at the|
00000f30  20 62 65 67 69 6e 6e 69  6e 67 20 6f 66 20 74 68  | beginning of th|
00000f40  65 20 74 61 67 2c 20 70  6f 69 6e 74 73 20 74 6f  |e tag, points to|
00000f50  20 74 68 65 20 73 74 61  72 74 20 6f 66 20 74 68  | the start of th|
00000f60  65 20 66 69 72 73 74 20  63 68 75 6e 6b 20 6f 66  |e first chunk of|
00000f70  20 74 65 78 74 2c 0a 74  68 65 20 6f 66 66 73 65  | text,.the offse|
00000f80  74 20 74 6f 20 6f 62 6a  65 63 74 20 70 6f 69 6e  |t to object poin|
00000f90  74 73 20 74 6f 20 74 68  65 20 65 6e 64 20 6f 66  |ts to the end of|
00000fa0  20 74 68 69 73 20 63 68  75 6e 6b 20 6f 66 20 74  | this chunk of t|
00000fb0  65 78 74 20 28 3d 20 74  68 65 20 63 61 72 65 74  |ext (= the caret|
00000fc0  0a 70 6f 73 69 74 69 6f  6e 29 20 77 68 69 6c 65  |.position) while|
00000fd0  20 74 68 65 20 76 61 6c  75 65 73 20 61 74 20 74  | the values at t|
00000fe0  61 67 2b 32 34 20 61 6e  64 20 74 61 67 2b 32 38  |ag+24 and tag+28|
00000ff0  20 70 6f 69 6e 74 20 74  6f 20 74 68 65 20 72 65  | point to the re|
00001000  73 74 20 6f 66 20 74 68  65 0a 74 65 78 74 2e 20  |st of the.text. |
00001010  53 75 69 74 61 62 6c 65  20 6d 61 6e 69 70 75 6c  |Suitable manipul|
00001020  61 74 69 6f 6e 20 6f 66  20 74 68 65 73 65 20 76  |ation of these v|
00001030  61 6c 75 65 73 20 73 68  6f 75 6c 64 20 61 6c 6c  |alues should all|
00001040  6f 77 20 61 20 74 65 78  74 20 65 64 69 74 6f 72  |ow a text editor|
00001050  20 74 6f 0a 77 6f 72 6b  20 77 69 74 68 20 50 43  | to.work with PC|
00001060  41 2e 20 4e 6f 74 65 3a  20 74 68 69 73 20 68 61  |A. Note: this ha|
00001070  73 20 6e 6f 74 20 62 65  65 6e 20 74 65 73 74 65  |s not been teste|
00001080  64 20 77 69 74 68 20 61  6e 79 20 63 6f 64 65 20  |d with any code |
00001090  2d 20 61 6e 79 20 63 6f  6d 6d 65 6e 74 73 0a 70  |- any comments.p|
000010a0  6c 65 61 73 65 20 63 6f  6e 74 61 63 74 20 74 68  |lease contact th|
000010b0  65 20 61 75 74 68 6f 72  20 6f 66 20 50 43 41 2e  |e author of PCA.|
000010c0  0a 0a 54 68 65 20 74 61  67 20 65 78 74 65 6e 73  |..The tag extens|
000010d0  69 6f 6e 20 73 79 73 74  65 6d 20 69 73 20 70 6f  |ion system is po|
000010e0  74 65 6e 74 69 61 6c 6c  79 20 76 65 72 79 20 70  |tentially very p|
000010f0  6f 77 65 72 66 75 6c 20  62 75 74 20 70 6c 65 61  |owerful but plea|
00001100  73 65 20 64 6f 20 6e 6f  74 0a 61 62 75 73 65 20  |se do not.abuse |
00001110  69 74 2e 20 49 66 20 65  76 65 72 79 6f 6e 65 20  |it. If everyone |
00001120  77 68 6f 20 65 76 65 72  20 77 72 69 74 65 73 20  |who ever writes |
00001130  61 20 50 43 41 20 70 72  6f 67 72 61 6d 20 63 72  |a PCA program cr|
00001140  65 61 74 65 73 20 61 20  74 61 67 20 65 78 74 65  |eates a tag exte|
00001150  6e 73 69 6f 6e 0a 66 6f  72 20 74 68 65 69 72 20  |nsion.for their |
00001160  6f 77 6e 20 6f 62 6a 65  63 74 20 66 6f 72 6d 61  |own object forma|
00001170  74 20 74 68 65 6e 20 63  68 61 6f 73 20 77 69 6c  |t then chaos wil|
00001180  6c 20 72 65 69 67 6e 20  61 6e 64 20 74 68 65 20  |l reign and the |
00001190  50 43 41 20 73 79 73 74  65 6d 20 77 69 6c 6c 0a  |PCA system will.|
000011a0  62 65 63 6f 6d 65 20 75  73 65 6c 65 73 73 2e 20  |become useless. |
000011b0  28 41 6e 79 6f 6e 65 20  71 75 65 73 74 69 6f 6e  |(Anyone question|
000011c0  69 6e 67 20 74 68 69 73  20 69 73 20 69 6e 76 69  |ing this is invi|
000011d0  74 65 64 20 74 6f 20 75  73 65 20 74 68 65 20 73  |ted to use the s|
000011e0  70 65 63 69 66 69 63 61  74 69 6f 6e 0a 64 6f 63  |pecification.doc|
000011f0  75 6d 65 6e 74 20 66 6f  72 20 74 68 65 20 54 49  |ument for the TI|
00001200  46 46 20 66 69 6c 65 20  66 6f 72 6d 61 74 20 61  |FF file format a|
00001210  73 20 62 65 64 73 69 64  65 20 72 65 61 64 69 6e  |s bedside readin|
00001220  67 20 2d 20 61 20 70 65  72 66 65 63 74 20 65 78  |g - a perfect ex|
00001230  61 6d 70 6c 65 20 6f 66  0a 61 20 74 61 67 67 65  |ample of.a tagge|
00001240  64 20 66 69 6c 65 20 66  6f 72 6d 61 74 20 67 6f  |d file format go|
00001250  6e 65 20 77 72 6f 6e 67  29 2e 20 49 6e 20 67 65  |ne wrong). In ge|
00001260  6e 65 72 61 6c 2c 20 74  68 65 20 62 61 73 69 63  |neral, the basic|
00001270  20 74 61 67 20 73 74 72  75 63 74 75 72 65 20 6f  | tag structure o|
00001280  72 20 74 68 65 0a 27 70  63 61 20 74 65 78 74 27  |r the.'pca text'|
00001290  20 65 78 74 65 6e 73 69  6f 6e 20 64 65 66 69 6e  | extension defin|
000012a0  65 64 20 61 62 6f 76 65  20 77 69 6c 6c 20 64 6f  |ed above will do|
000012b0  20 66 6f 72 20 6d 6f 73  74 20 64 61 74 61 20 74  | for most data t|
000012c0  79 70 65 73 2e 20 49 66  20 79 6f 75 0a 72 65 61  |ypes. If you.rea|
000012d0  6c 6c 79 20 66 65 65 6c  20 79 6f 75 20 68 61 76  |lly feel you hav|
000012e0  65 20 74 6f 20 63 72 65  61 74 65 20 79 6f 75 72  |e to create your|
000012f0  20 6f 77 6e 20 65 78 74  65 6e 73 69 6f 6e 20 74  | own extension t|
00001300  68 65 6e 20 70 6c 65 61  73 65 20 64 6f 75 62 6c  |hen please doubl|
00001310  65 20 63 68 65 63 6b 0a  77 69 74 68 20 43 6c 61  |e check.with Cla|
00001320  72 65 73 20 74 68 61 74  20 61 20 73 75 69 74 61  |res that a suita|
00001330  62 6c 65 20 65 78 74 65  6e 73 69 6f 6e 20 64 6f  |ble extension do|
00001340  65 73 20 6e 6f 74 20 61  6c 72 65 61 64 79 20 65  |es not already e|
00001350  78 69 73 74 2e 20 54 68  65 20 65 78 74 65 6e 73  |xist. The extens|
00001360  69 6f 6e 0a 73 68 6f 75  6c 64 20 74 68 65 6e 20  |ion.should then |
00001370  62 65 20 64 65 66 69 6e  65 64 20 69 6e 20 74 68  |be defined in th|
00001380  65 20 66 6f 72 6d 61 74  20 67 69 76 65 6e 20 61  |e format given a|
00001390  62 6f 76 65 20 61 6e 64  20 74 68 65 20 69 6e 66  |bove and the inf|
000013a0  6f 72 6d 61 74 69 6f 6e  20 73 65 6e 74 20 74 6f  |ormation sent to|
000013b0  0a 43 6c 61 72 65 73 20  66 6f 72 20 64 69 73 74  |.Clares for dist|
000013c0  72 69 62 75 74 69 6f 6e  20 74 6f 20 74 68 65 20  |ribution to the |
000013d0  50 43 41 20 63 6f 6d 6d  75 6e 69 74 79 2e 0a 0a  |PCA community...|
000013e0  4f 6e 20 72 65 63 65 69  70 74 20 6f 66 20 61 20  |On receipt of a |
000013f0  50 43 41 20 6d 65 73 73  61 67 65 20 79 6f 75 20  |PCA message you |
00001400  73 68 6f 75 6c 64 20 64  65 63 69 64 65 20 69 66  |should decide if|
00001410  20 74 68 65 20 6d 65 73  73 61 67 65 20 72 65 66  | the message ref|
00001420  65 72 73 20 74 6f 20 6f  6e 65 0a 6f 66 20 79 6f  |ers to one.of yo|
00001430  75 72 20 6f 62 6a 65 63  74 73 20 28 65 69 74 68  |ur objects (eith|
00001440  65 72 20 61 20 6c 6f 63  61 6c 20 6f 6e 65 20 79  |er a local one y|
00001450  6f 75 20 63 72 65 61 74  65 64 20 79 6f 75 72 73  |ou created yours|
00001460  65 6c 66 20 6f 72 20 61  20 72 65 6d 6f 74 65 20  |elf or a remote |
00001470  6f 62 6a 65 63 74 0a 77  68 69 63 68 20 79 6f 75  |object.which you|
00001480  20 61 72 65 20 65 64 69  74 69 6e 67 29 2e 20 59  | are editing). Y|
00001490  6f 75 20 64 6f 20 74 68  69 73 20 62 79 20 63 6f  |ou do this by co|
000014a0  6d 70 61 72 69 6e 67 20  74 68 65 20 6f 62 6a 65  |mparing the obje|
000014b0  63 74 27 73 20 74 61 67  20 61 64 64 72 65 73 73  |ct's tag address|
000014c0  2c 0a 70 61 73 73 65 64  20 69 6e 20 74 68 65 20  |,.passed in the |
000014d0  6d 65 73 73 61 67 65 2c  20 77 69 74 68 20 61 20  |message, with a |
000014e0  6c 6f 63 61 6c 20 61 72  72 61 79 20 6f 66 20 74  |local array of t|
000014f0  61 67 73 20 74 68 61 74  20 79 6f 75 20 6b 6e 6f  |ags that you kno|
00001500  77 20 61 62 6f 75 74 2e  20 47 65 74 0a 69 6e 74  |w about. Get.int|
00001510  6f 20 74 68 65 20 68 61  62 69 74 20 6f 66 20 64  |o the habit of d|
00001520  6f 69 6e 67 20 69 74 20  74 68 69 73 20 77 61 79  |oing it this way|
00001530  20 28 72 61 74 68 65 72  20 74 68 61 6e 20 63 6f  | (rather than co|
00001540  6d 70 61 72 69 6e 67 20  74 68 65 20 74 61 67 27  |mparing the tag'|
00001550  73 20 61 64 64 72 65 73  73 0a 66 69 65 6c 64 73  |s address.fields|
00001560  20 77 69 74 68 20 79 6f  75 72 20 6f 77 6e 20 64  | with your own d|
00001570  61 74 61 20 73 74 72 75  63 74 75 72 65 73 29 20  |ata structures) |
00001580  61 73 20 6f 6e 65 20 6d  65 73 73 61 67 65 2c 20  |as one message, |
00001590  4d 65 73 73 61 67 65 5f  44 65 73 65 6c 65 63 74  |Message_Deselect|
000015a0  20 6d 61 79 0a 70 61 73  73 20 61 20 74 61 67 20  | may.pass a tag |
000015b0  61 64 64 72 65 73 73 20  77 68 69 63 68 20 6e 6f  |address which no|
000015c0  20 6c 6f 6e 67 65 72 20  61 63 74 75 61 6c 6c 79  | longer actually|
000015d0  20 63 6f 6e 74 61 69 6e  73 20 76 61 6c 69 64 20  | contains valid |
000015e0  64 61 74 61 20 28 74 68  65 20 6f 62 6a 65 63 74  |data (the object|
000015f0  0a 69 74 73 65 6c 66 20  68 61 76 69 6e 67 20 62  |.itself having b|
00001600  65 65 6e 20 64 65 6c 65  74 65 64 29 2e 20 53 65  |een deleted). Se|
00001610  65 20 69 74 73 20 65 6e  74 72 79 20 66 6f 72 20  |e its entry for |
00001620  64 65 74 61 69 6c 73 2e  0a 0a 49 6e 20 74 68 65  |details...In the|
00001630  20 66 6f 6c 6c 6f 77 69  6e 67 20 64 6f 63 75 6d  | following docum|
00001640  65 6e 74 61 74 69 6f 6e  20 27 20 4c 6f 63 61 6c  |entation ' Local|
00001650  20 27 20 69 73 20 74 68  65 20 27 6f 77 6e 69 6e  | ' is the 'ownin|
00001660  67 20 74 61 73 6b 27 20  62 65 69 6e 67 20 74 68  |g task' being th|
00001670  65 20 74 61 73 6b 0a 74  6f 20 77 68 69 63 68 20  |e task.to which |
00001680  74 68 65 20 6f 62 6a 65  63 74 20 69 73 20 27 6c  |the object is 'l|
00001690  6f 63 61 6c 27 2e 20 54  68 69 73 20 74 61 73 6b  |ocal'. This task|
000016a0  20 63 72 65 61 74 65 64  20 74 68 65 20 6f 62 6a  | created the obj|
000016b0  65 63 74 20 61 6e 64 20  69 74 73 20 50 43 41 0a  |ect and its PCA.|
000016c0  74 61 67 2e 20 49 74 20  6b 6e 6f 77 73 20 68 6f  |tag. It knows ho|
000016d0  77 20 74 6f 20 72 65 73  69 7a 65 20 61 6e 64 20  |w to resize and |
000016e0  68 6f 77 20 74 6f 20 64  65 6c 65 74 65 20 74 68  |how to delete th|
000016f0  65 20 6f 62 6a 65 63 74  2e 0a 0a 27 20 52 65 6d  |e object...' Rem|
00001700  6f 74 65 20 27 20 69 73  20 74 68 65 20 27 75 74  |ote ' is the 'ut|
00001710  69 6c 69 74 79 27 20 74  61 73 6b 20 2d 20 74 68  |ility' task - th|
00001720  65 20 6f 6e 65 20 77 68  69 63 68 20 6d 6f 64 69  |e one which modi|
00001730  66 69 65 73 20 61 6e 20  6f 62 6a 65 63 74 20 66  |fies an object f|
00001740  6f 72 20 74 68 65 0a 27  6c 6f 63 61 6c 27 20 6f  |or the.'local' o|
00001750  72 20 6f 77 6e 69 6e 67  20 74 61 73 6b 2e 0a 0a  |r owning task...|
00001760  50 6c 65 61 73 65 20 6e  6f 74 65 20 77 68 69 63  |Please note whic|
00001770  68 20 6d 65 73 73 61 67  65 73 20 61 72 65 20 74  |h messages are t|
00001780  6f 20 62 65 20 62 72 6f  61 64 63 61 73 74 20 61  |o be broadcast a|
00001790  6e 64 20 77 68 69 63 68  20 61 72 65 20 73 65 6e  |nd which are sen|
000017a0  74 0a 74 61 73 6b 2d 74  6f 2d 74 61 73 6b 2e 20  |t.task-to-task. |
000017b0  54 68 65 20 63 6f 72 72  65 63 74 20 66 75 6e 63  |The correct func|
000017c0  74 69 6f 6e 69 6e 67 20  6f 66 20 74 68 65 20 73  |tioning of the s|
000017d0  79 73 74 65 6d 20 64 65  70 65 6e 64 73 20 6f 6e  |ystem depends on|
000017e0  20 74 68 65 20 63 6f 72  72 65 63 74 0a 75 73 61  | the correct.usa|
000017f0  67 65 2e 0a 0a 0a 50 43  41 20 4d 65 73 73 61 67  |ge....PCA Messag|
00001800  65 20 53 75 6d 6d 61 72  79 0a 3d 3d 3d 3d 3d 3d  |e Summary.======|
00001810  3d 3d 3d 3d 3d 3d 3d 3d  3d 3d 3d 3d 3d 0a 0a 54  |=============..T|
00001820  68 69 73 20 69 73 20 69  6e 74 65 6e 64 65 64 20  |his is intended |
00001830  74 6f 20 67 69 76 65 20  74 68 65 20 70 72 6f 67  |to give the prog|
00001840  72 61 6d 6d 65 72 20 61  6e 20 6f 76 65 72 76 69  |rammer an overvi|
00001850  65 77 20 6f 66 20 77 68  61 74 20 67 6f 65 73 20  |ew of what goes |
00001860  6f 6e 20 69 6e 20 61 0a  74 79 70 69 63 61 6c 20  |on in a.typical |
00001870  50 43 41 20 73 65 73 73  69 6f 6e 2e 20 49 74 20  |PCA session. It |
00001880  69 67 6e 6f 72 65 73 20  6d 61 6e 79 20 6f 66 20  |ignores many of |
00001890  74 68 65 20 66 69 6e 65  72 20 70 6f 69 6e 74 73  |the finer points|
000018a0  20 6f 66 20 74 68 65 20  70 72 6f 74 6f 63 6f 6c  | of the protocol|
000018b0  2e 0a 0a 31 2e 20 4c 6f  63 61 6c 20 74 61 73 6b  |...1. Local task|
000018c0  20 62 72 6f 61 64 63 61  73 74 73 20 4d 65 73 73  | broadcasts Mess|
000018d0  61 67 65 5f 57 68 6f 73  41 62 6f 75 74 20 66 6f  |age_WhosAbout fo|
000018e0  72 20 61 20 73 65 6c 65  63 74 65 64 20 6f 62 6a  |r a selected obj|
000018f0  65 63 74 2e 0a 0a 32 2e  20 52 65 6d 6f 74 65 20  |ect...2. Remote |
00001900  74 61 73 6b 73 20 65 78  61 6d 69 6e 65 20 6d 65  |tasks examine me|
00001910  73 73 61 67 65 20 64 61  74 61 20 61 6e 64 20 72  |ssage data and r|
00001920  65 73 70 6f 6e 64 20 77  69 74 68 20 4d 65 73 73  |espond with Mess|
00001930  61 67 65 5f 49 6d 48 65  72 65 2e 0a 0a 33 2e 20  |age_ImHere...3. |
00001940  4c 6f 63 61 6c 20 74 61  73 6b 2c 20 69 6e 20 72  |Local task, in r|
00001950  65 73 70 6f 6e 73 65 20  74 6f 20 75 73 65 72 73  |esponse to users|
00001960  20 63 68 6f 69 63 65 20  6f 66 20 52 65 6d 6f 74  | choice of Remot|
00001970  65 20 73 65 6e 64 73 0a  20 20 20 4d 65 73 73 61  |e sends.   Messa|
00001980  67 65 5f 44 6f 59 6f 75  72 53 74 75 66 66 2e 0a  |ge_DoYourStuff..|
00001990  0a 34 2e 20 28 69 66 20  64 6f 69 6e 67 20 69 6e  |.4. (if doing in|
000019a0  70 6c 61 63 65 20 65 64  69 74 69 6e 67 29 20 52  |place editing) R|
000019b0  65 6d 6f 74 65 20 74 61  73 6b 2c 20 6f 6e 20 72  |emote task, on r|
000019c0  65 63 65 69 70 74 20 6f  66 20 44 6f 59 6f 75 72  |eceipt of DoYour|
000019d0  53 74 75 66 66 20 73 65  6e 64 73 0a 20 20 20 4d  |Stuff sends.   M|
000019e0  65 73 73 61 67 65 5f 48  6f 6f 6b 4d 65 2e 0a 0a  |essage_HookMe...|
000019f0  35 2e 20 28 72 65 70 65  61 74 65 64 29 20 52 65  |5. (repeated) Re|
00001a00  6d 6f 74 65 20 61 6e 64  20 4c 6f 63 61 6c 20 74  |mote and Local t|
00001a10  61 73 6b 73 20 62 72 6f  61 64 63 61 73 74 20 4d  |asks broadcast M|
00001a20  65 73 73 61 67 65 5f 55  70 64 61 74 65 41 72 65  |essage_UpdateAre|
00001a30  61 20 69 66 20 74 68 65  0a 20 20 20 75 73 65 72  |a if the.   user|
00001a40  20 63 68 61 6e 67 65 73  20 74 68 65 20 6f 62 6a  | changes the obj|
00001a50  65 63 74 2e 0a 0a 36 2e  20 52 65 6d 6f 74 65 20  |ect...6. Remote |
00001a60  74 61 73 6b 20 73 65 6e  64 73 20 4d 65 73 73 61  |task sends Messa|
00001a70  67 65 5f 55 6e 68 6f 6f  6b 20 77 68 65 6e 20 75  |ge_Unhook when u|
00001a80  73 65 72 20 63 6c 6f 73  65 73 20 77 69 6e 64 6f  |ser closes windo|
00001a90  77 2f 74 6f 6f 6c 62 61  72 20 6f 6e 74 6f 0a 20  |w/toolbar onto. |
00001aa0  20 20 6f 62 6a 65 63 74  2e 0a 0a 37 2e 20 4c 6f  |  object...7. Lo|
00001ab0  63 61 6c 20 74 61 73 6b  20 62 72 6f 61 64 63 61  |cal task broadca|
00001ac0  73 74 73 20 4d 65 73 73  61 67 65 5f 44 65 73 65  |sts Message_Dese|
00001ad0  6c 65 63 74 20 69 66 20  75 73 65 72 20 64 65 6c  |lect if user del|
00001ae0  65 74 65 73 20 6f 62 6a  65 63 74 2f 71 75 69 74  |etes object/quit|
00001af0  73 0a 20 20 20 70 72 6f  67 72 61 6d 2e 0a 0a 54  |s.   program...T|
00001b00  68 65 20 76 61 72 69 61  62 6c 65 20 6e 61 6d 65  |he variable name|
00001b10  73 20 75 73 65 64 20 69  6e 20 74 68 65 20 65 78  |s used in the ex|
00001b20  61 6d 70 6c 65 20 42 41  53 49 43 20 70 72 6f 67  |ample BASIC prog|
00001b30  72 61 6d 20 61 72 65 20  69 6e 63 6c 75 64 65 64  |ram are included|
00001b40  20 61 66 74 65 72 20 74  68 65 0a 6d 65 73 73 61  | after the.messa|
00001b50  67 65 20 6e 75 6d 62 65  72 2e 20 0a 0a 4d 65 73  |ge number. ..Mes|
00001b60  73 61 67 65 5f 57 68 6f  73 41 62 6f 75 74 28 26  |sage_WhosAbout(&|
00001b70  38 33 34 38 34 29 20 28  4d 73 67 5f 57 68 6f 73  |83484) (Msg_Whos|
00001b80  25 29 0a 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |%).-------------|
00001b90  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00001ba0  2d 2d 2d 2d 2d 2d 2d 2d  0a 0a 42 72 6f 61 64 63  |--------..Broadc|
00001bb0  61 73 74 20 62 79 20 4c  6f 63 61 6c 20 74 61 73  |ast by Local tas|
00001bc0  6b 20 77 68 65 6e 20 6f  70 65 6e 69 6e 67 20 55  |k when opening U|
00001bd0  74 69 6c 69 74 79 20 73  75 62 2d 6d 65 6e 75 2f  |tility sub-menu/|
00001be0  70 6f 70 75 70 20 28 73  65 65 20 74 68 65 20 73  |popup (see the s|
00001bf0  65 63 74 69 6f 6e 0a 6f  6e 20 75 73 65 72 20 69  |ection.on user i|
00001c00  6e 74 65 72 66 61 63 65  29 2e 0a 0a 54 68 65 20  |nterface)...The |
00001c10  62 6c 6f 63 6b 20 70 6f  69 6e 74 65 64 20 74 6f  |block pointed to|
00001c20  20 62 79 20 52 31 20 63  6f 6e 74 61 69 6e 73 3a  | by R1 contains:|
00001c30  20 0a 20 0a 52 31 2b 32  30 20 20 20 66 69 6c 65  | . .R1+20   file|
00001c40  74 79 70 65 20 6f 66 20  6f 62 6a 65 63 74 0a 52  |type of object.R|
00001c50  31 2b 32 34 20 20 20 61  64 64 72 65 73 73 20 6f  |1+24   address o|
00001c60  66 20 6f 62 6a 65 63 74  20 74 61 67 0a 52 31 2b  |f object tag.R1+|
00001c70  32 38 20 20 20 72 65 73  65 72 76 65 64 20 2d 20  |28   reserved - |
00001c80  30 20 0a 0a 52 65 63 65  69 76 69 6e 67 20 72 65  |0 ..Receiving re|
00001c90  6d 6f 74 65 20 74 61 73  6b 73 20 73 68 6f 75 6c  |mote tasks shoul|
00001ca0  64 20 72 65 73 70 6f 6e  64 20 77 69 74 68 20 4d  |d respond with M|
00001cb0  65 73 73 61 67 65 5f 49  6d 48 65 72 65 20 61 73  |essage_ImHere as|
00001cc0  20 64 65 66 69 6e 65 64  20 62 65 6c 6f 77 0a 69  | defined below.i|
00001cd0  66 20 74 68 65 20 66 69  6c 65 74 79 70 65 20 69  |f the filetype i|
00001ce0  73 20 27 69 6e 74 65 72  65 73 74 69 6e 67 27 2e  |s 'interesting'.|
00001cf0  20 59 6f 75 20 63 61 6e  20 65 78 61 6d 69 6e 65  | You can examine|
00001d00  20 74 68 65 20 64 61 74  61 20 69 6e 20 74 68 65  | the data in the|
00001d10  20 74 61 67 20 61 74 0a  52 31 2b 32 34 20 69 66  | tag at.R1+24 if|
00001d20  20 74 68 65 20 66 69 6c  65 74 79 70 65 20 61 6c  | the filetype al|
00001d30  6f 6e 65 20 64 6f 65 73  20 6e 6f 74 20 73 75 66  |one does not suf|
00001d40  66 69 63 65 20 28 66 6f  72 20 65 78 61 6d 70 6c  |fice (for exampl|
00001d50  65 2c 20 61 20 70 72 6f  67 72 61 6d 20 77 68 69  |e, a program whi|
00001d60  63 68 0a 63 61 6e 20 6f  6e 6c 79 20 65 64 69 74  |ch.can only edit|
00001d70  20 33 32 62 70 70 20 73  70 72 69 74 65 73 20 73  | 32bpp sprites s|
00001d80  68 6f 75 6c 64 20 65 78  61 6d 69 6e 65 20 74 68  |hould examine th|
00001d90  65 20 73 70 72 69 74 65  20 74 79 70 65 20 77 6f  |e sprite type wo|
00001da0  72 64 20 61 74 0a 21 28  52 31 2b 32 34 29 2b 28  |rd at.!(R1+24)+(|
00001db0  52 31 2b 32 34 29 21 34  29 20 2b 34 30 20 28 69  |R1+24)!4) +40 (i|
00001dc0  65 20 74 61 67 20 61 64  64 72 65 73 73 20 66 69  |e tag address fi|
00001dd0  65 6c 64 2b 6f 66 66 73  65 74 20 74 6f 20 6f 62  |eld+offset to ob|
00001de0  6a 65 63 74 20 66 69 65  6c 64 29 2b 34 30 0a 62  |ject field)+40.b|
00001df0  65 66 6f 72 65 20 73 65  6e 64 69 6e 67 20 4d 65  |efore sending Me|
00001e00  73 73 61 67 65 5f 49 6d  48 65 72 65 20 29 2e 20  |ssage_ImHere ). |
00001e10  0a 0a 4d 65 73 73 61 67  65 5f 49 6d 48 65 72 65  |..Message_ImHere|
00001e20  28 26 38 33 34 38 35 29  20 28 4d 73 67 5f 49 6d  |(&83485) (Msg_Im|
00001e30  25 29 0a 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |%).-------------|
00001e40  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00001e50  2d 2d 2d 20 0a 0a 53 65  6e 74 20 62 79 20 52 65  |--- ..Sent by Re|
00001e60  6d 6f 74 65 20 74 61 73  6b 20 74 6f 20 4c 6f 63  |mote task to Loc|
00001e70  61 6c 20 74 61 73 6b 2e  20 4c 6f 63 61 6c 20 72  |al task. Local r|
00001e80  65 63 6f 72 64 73 20 74  68 65 20 64 61 74 61 20  |ecords the data |
00001e90  70 61 73 73 65 64 20 66  6f 72 20 6c 61 74 65 72  |passed for later|
00001ea0  0a 75 73 65 20 69 6e 20  63 72 65 61 74 69 6e 67  |.use in creating|
00001eb0  20 61 20 64 69 61 6c 6f  67 75 65 20 62 6f 78 20  | a dialogue box |
00001ec0  6f 72 20 6d 65 6e 75 2e  0a 0a 54 68 65 20 62 6c  |or menu...The bl|
00001ed0  6f 63 6b 20 70 6f 69 6e  74 65 64 20 74 6f 20 62  |ock pointed to b|
00001ee0  79 20 52 31 20 63 6f 6e  74 61 69 6e 73 3a 20 0a  |y R1 contains: .|
00001ef0  20 0a 52 31 2b 32 30 0a  20 20 20 20 20 20 20 20  | .R1+20.        |
00001f00  62 69 74 73 20 30 2d 37  20 66 6c 61 67 73 3a 0a  |bits 0-7 flags:.|
00001f10  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001f20  62 30 20 53 70 72 69 74  65 6e 61 6d 65 20 73 75  |b0 Spritename su|
00001f30  70 70 6c 69 65 64 0a 20  20 20 20 20 20 20 20 20  |pplied.         |
00001f40  20 20 20 20 20 20 20 62  31 20 49 6e 66 6f 20 61  |       b1 Info a|
00001f50  76 61 69 6c 61 62 6c 65  0a 20 20 20 20 20 20 20  |vailable.       |
00001f60  20 20 20 20 20 20 20 20  20 62 32 20 52 65 73 65  |         b2 Rese|
00001f70  72 76 65 64 20 2d 20 30  0a 20 20 20 20 20 20 20  |rved - 0.       |
00001f80  20 20 20 20 20 20 20 20  20 62 33 20 54 6f 6f 6c  |         b3 Tool|
00001f90  20 77 61 6e 74 73 20 74  6f 20 27 6f 77 6e 27 20  | wants to 'own' |
00001fa0  74 68 65 20 6f 62 6a 65  63 74 0a 20 20 20 20 20  |the object.     |
00001fb0  20 20 20 20 20 20 20 20  20 20 20 62 34 20 54 6f  |           b4 To|
00001fc0  6f 6c 20 77 61 6e 74 73  20 49 6e 20 70 6c 61 63  |ol wants In plac|
00001fd0  65 20 65 64 69 74 69 6e  67 0a 20 20 20 20 20 20  |e editing.      |
00001fe0  20 20 20 20 20 20 20 20  20 20 62 35 2d 37 20 52  |          b5-7 R|
00001ff0  65 73 65 72 76 65 64 20  2d 20 30 0a 20 20 20 20  |eserved - 0.    |
00002000  20 20 20 20 20 20 20 20  20 20 20 20 62 38 2d 33  |            b8-3|
00002010  31 20 52 65 73 65 72 76  65 64 20 2d 20 30 0a 20  |1 Reserved - 0. |
00002020  0a 52 31 2b 32 34 20 20  20 20 20 20 20 20 20 20  |.R1+24          |
00002030  20 54 6f 6f 6c 20 69 64  2e 0a 52 31 2b 32 38 20  | Tool id..R1+28 |
00002040  20 20 20 20 20 20 20 20  20 20 53 74 72 69 6e 67  |          String|
00002050  2e 20 4d 65 6e 75 20 65  6e 74 72 79 2f 46 75 6e  |. Menu entry/Fun|
00002060  63 74 69 6f 6e 20 6e 61  6d 65 20 28 65 67 2e 20  |ction name (eg. |
00002070  43 6f 6e 74 72 61 73 74  2e 2e 2e 29 2e 0a 20 20  |Contrast...)..  |
00002080  20 20 20 20 20 20 20 20  20 20 20 20 20 20 4c 65  |              Le|
00002090  6e 67 74 68 20 6c 69 6d  69 74 65 64 20 74 6f 20  |ngth limited to |
000020a0  33 31 63 68 61 72 73 2b  74 65 72 6d 69 6e 61 74  |31chars+terminat|
000020b0  6f 72 2e 0a 52 31 2b 36  30 20 20 20 20 20 20 20  |or..R1+60       |
000020c0  20 20 20 20 53 74 72 69  6e 67 2e 20 4e 61 6d 65  |    String. Name|
000020d0  20 6f 66 20 73 70 72 69  74 65 20 69 6e 20 77 69  | of sprite in wi|
000020e0  6d 70 20 73 70 72 69 74  65 20 70 6f 6f 6c 0a 20  |mp sprite pool. |
000020f0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 28  |               (|
00002100  69 66 20 62 30 20 6f 66  20 52 31 2b 32 30 20 69  |if b0 of R1+20 i|
00002110  73 20 73 65 74 29 0a 20  0a 20 0a 20 20 0a 54 68  |s set). . .  .Th|
00002120  65 20 74 6f 6f 6c 20 69  64 20 69 73 20 69 6e 74  |e tool id is int|
00002130  65 6e 64 65 64 20 66 6f  72 20 72 65 6d 6f 74 65  |ended for remote|
00002140  20 74 61 73 6b 73 20 77  68 69 63 68 20 70 72 6f  | tasks which pro|
00002150  76 69 64 65 20 6d 6f 72  65 20 74 68 61 6e 20 6f  |vide more than o|
00002160  6e 65 0a 75 74 69 6c 69  74 79 2e 20 49 74 20 69  |ne.utility. It i|
00002170  73 20 72 65 74 75 72 6e  65 64 20 74 6f 20 74 68  |s returned to th|
00002180  65 20 74 61 73 6b 20 77  69 74 68 20 4d 65 73 73  |e task with Mess|
00002190  61 67 65 5f 44 6f 59 6f  75 72 53 74 75 66 66 20  |age_DoYourStuff |
000021a0  2e 20 0a 0a 46 6c 61 67  73 3a 20 0a 20 0a 62 30  |. ..Flags: . .b0|
000021b0  20 20 20 20 20 20 69 6e  64 69 63 61 74 65 73 20  |      indicates |
000021c0  74 6f 20 74 68 65 20 72  65 63 69 70 69 65 6e 74  |to the recipient|
000021d0  20 74 68 61 74 20 74 68  65 72 65 20 69 73 20 61  | that there is a|
000021e0  20 73 70 72 69 74 65 20  6e 61 6d 65 20 61 74 20  | sprite name at |
000021f0  52 31 2b 36 30 0a 20 20  20 20 20 20 20 20 2d 20  |R1+60.        - |
00002200  74 68 65 20 73 70 72 69  74 65 20 69 73 20 73 74  |the sprite is st|
00002210  6f 72 65 64 20 69 6e 20  74 68 65 20 57 69 6d 70  |ored in the Wimp|
00002220  20 73 70 72 69 74 65 20  70 6f 6f 6c 20 61 6e 64  | sprite pool and|
00002230  20 73 68 6f 75 6c 64 20  62 65 0a 20 20 20 20 20  | should be.     |
00002240  20 20 20 75 73 65 64 20  77 68 65 6e 20 72 65 6e  |   used when ren|
00002250  64 65 72 69 6e 67 20 74  68 65 20 70 6f 70 75 70  |dering the popup|
00002260  20 64 69 61 6c 6f 67 75  65 20 62 6f 78 2e 0a 20  | dialogue box.. |
00002270  0a 20 0a 62 31 20 20 20  20 20 20 69 6e 64 69 63  |. .b1      indic|
00002280  61 74 65 73 20 74 68 61  74 20 74 68 65 20 74 6f  |ates that the to|
00002290  6f 6c 20 63 61 6e 20 70  72 6f 76 69 64 65 20 61  |ol can provide a|
000022a0  20 72 65 73 70 6f 6e 73  65 0a 20 20 20 20 20 20  | response.      |
000022b0  20 20 74 6f 20 20 4d 65  73 73 61 67 65 5f 49 6e  |  to  Message_In|
000022c0  66 6f 20 2e 0a 20 0a 62  32 20 20 20 20 20 20 52  |fo .. .b2      R|
000022d0  65 73 65 72 76 65 64 20  2d 20 30 0a 20 0a 62 33  |eserved - 0. .b3|
000022e0  20 20 20 20 20 20 69 6e  64 69 63 61 74 65 73 20  |      indicates |
000022f0  74 68 61 74 20 74 68 65  20 74 6f 6f 6c 20 77 61  |that the tool wa|
00002300  6e 74 73 20 74 6f 20 27  6f 77 6e 27 20 74 68 65  |nts to 'own' the|
00002310  20 6f 62 6a 65 63 74 2e  0a 20 20 20 20 20 20 20  | object..       |
00002320  20 4c 6f 63 61 6c 20 74  61 73 6b 20 73 68 6f 75  | Local task shou|
00002330  6c 64 20 73 65 6e 64 20  4d 73 67 5f 44 65 73 65  |ld send Msg_Dese|
00002340  6c 65 63 74 20 66 6f 72  20 74 68 65 20 6f 62 6a  |lect for the obj|
00002350  65 63 74 0a 20 20 20 20  20 20 20 20 62 65 66 6f  |ect.        befo|
00002360  72 65 20 73 65 6e 64 69  6e 67 20 20 4d 65 73 73  |re sending  Mess|
00002370  61 67 65 5f 44 6f 59 6f  75 72 53 74 75 66 66 20  |age_DoYourStuff |
00002380  20 69 66 20 74 68 69 73  20 62 69 74 20 69 73 0a  | if this bit is.|
00002390  20 20 20 20 20 20 20 20  73 65 74 2e 20 44 6f 20  |        set. Do |
000023a0  6e 6f 74 20 73 65 74 20  74 68 69 73 20 62 69 74  |not set this bit|
000023b0  20 75 6e 6c 65 73 73 20  79 6f 75 20 68 61 76 65  | unless you have|
000023c0  20 74 6f 20 61 73 20 69  74 0a 20 20 20 20 20 20  | to as it.      |
000023d0  20 20 77 69 6c 6c 20 70  72 65 76 65 6e 74 20 6f  |  will prevent o|
000023e0  74 68 65 72 20 72 65 6d  6f 74 65 20 74 61 73 6b  |ther remote task|
000023f0  73 20 66 72 6f 6d 20 73  68 61 72 69 6e 67 20 74  |s from sharing t|
00002400  68 65 0a 20 20 20 20 20  20 20 20 6f 62 6a 65 63  |he.        objec|
00002410  74 20 61 74 20 74 68 65  20 73 61 6d 65 20 74 69  |t at the same ti|
00002420  6d 65 2e 20 49 74 20 73  68 6f 75 6c 64 20 6f 6e  |me. It should on|
00002430  6c 79 20 62 65 20 73 65  74 20 77 68 65 6e 0a 20  |ly be set when. |
00002440  20 20 20 20 20 20 20 74  68 65 20 72 65 6d 6f 74  |       the remot|
00002450  65 20 74 61 73 6b 20 77  61 6e 74 73 20 74 6f 20  |e task wants to |
00002460  27 74 61 6b 65 20 6f 76  65 72 27 20 74 68 65 20  |'take over' the |
00002470  6f 62 6a 65 63 74 20 63  6f 6d 70 6c 65 74 65 6c  |object completel|
00002480  79 2e 0a 20 0a 20 20 20  20 20 20 20 20 2d 20 73  |y.. .        - s|
00002490  75 63 68 20 61 73 20 43  6f 6d 70 6f 73 69 74 69  |uch as Compositi|
000024a0  6f 6e 20 74 61 6b 69 6e  67 20 6f 76 65 72 20 61  |on taking over a|
000024b0  20 33 32 62 70 70 20 73  70 72 69 74 65 0a 20 20  | 32bpp sprite.  |
000024c0  20 20 20 20 20 20 66 6f  72 20 75 73 65 20 61 73  |      for use as|
000024d0  20 61 20 63 61 6e 76 61  73 2e 0a 20 0a 62 34 20  | a canvas.. .b4 |
000024e0  20 20 20 20 20 54 68 69  73 20 62 69 74 20 69 73  |     This bit is|
000024f0  20 64 65 73 69 67 6e 65  64 20 74 6f 20 61 6c 6c  | designed to all|
00002500  6f 77 20 66 6f 72 20 72  65 61 6c 20 27 69 6e 20  |ow for real 'in |
00002510  70 6c 61 63 65 20 65 64  69 74 69 6e 67 27 0a 20  |place editing'. |
00002520  20 20 20 20 20 20 20 6f  70 65 72 61 74 69 6f 6e  |       operation|
00002530  73 2e 20 42 65 63 61 75  73 65 20 6f 66 20 74 68  |s. Because of th|
00002540  65 20 61 6d 6f 75 6e 74  20 6f 66 20 63 6f 64 65  |e amount of code|
00002550  20 6e 65 63 65 73 73 61  72 79 0a 20 20 20 20 20  | necessary.     |
00002560  20 20 20 61 74 20 74 68  65 20 6c 6f 63 61 6c 20  |   at the local |
00002570  65 6e 64 20 74 6f 20 68  61 6e 64 6c 65 20 74 68  |end to handle th|
00002580  69 73 20 69 74 20 68 61  73 20 62 65 65 6e 20 64  |is it has been d|
00002590  65 66 69 6e 65 64 0a 20  20 20 20 20 20 20 20 61  |efined.        a|
000025a0  73 20 61 6e 20 6f 70 74  69 6f 6e 61 6c 20 70 61  |s an optional pa|
000025b0  72 74 20 6f 66 20 74 68  65 20 73 74 61 6e 64 61  |rt of the standa|
000025c0  72 64 2e 20 0a 0a 4c 6f  63 61 6c 20 61 70 70 6c  |rd. ..Local appl|
000025d0  69 63 61 74 69 6f 6e 73  20 77 68 69 63 68 20 64  |ications which d|
000025e0  6f 20 6e 6f 74 20 73 75  70 70 6f 72 74 20 69 6e  |o not support in|
000025f0  20 70 6c 61 63 65 20 65  64 69 74 69 6e 67 20 73  | place editing s|
00002600  68 6f 75 6c 64 20 63 6c  65 61 72 20 62 69 74 20  |hould clear bit |
00002610  34 0a 6f 66 20 74 68 65  20 66 6c 61 67 73 20 77  |4.of the flags w|
00002620  6f 72 64 20 61 6e 64 20  73 65 6e 64 20 74 68 61  |ord and send tha|
00002630  74 20 77 69 74 68 20 44  6f 59 6f 75 72 53 74 75  |t with DoYourStu|
00002640  66 66 2e 20 4f 6e 20 72  65 63 65 69 70 74 2c 20  |ff. On receipt, |
00002650  74 68 65 20 72 65 6d 6f  74 65 0a 61 70 70 6c 69  |the remote.appli|
00002660  63 61 74 69 6f 6e 20 73  68 6f 75 6c 64 20 63 68  |cation should ch|
00002670  65 63 6b 20 69 66 20 62  69 74 20 34 20 69 73 20  |eck if bit 4 is |
00002680  73 74 69 6c 6c 20 73 65  74 20 61 6e 64 20 69 66  |still set and if|
00002690  20 6e 6f 74 20 6f 70 65  6e 20 61 20 72 65 6d 6f  | not open a remo|
000026a0  74 65 0a 77 69 6e 64 6f  77 20 6f 6e 74 6f 20 74  |te.window onto t|
000026b0  68 65 20 6f 62 6a 65 63  74 2e 0a 0a 4e 6f 74 65  |he object...Note|
000026c0  73 3a 20 49 6e 20 65 61  72 6c 79 20 76 65 72 73  |s: In early vers|
000026d0  69 6f 6e 73 20 6f 66 20  74 68 69 73 20 73 74 61  |ions of this sta|
000026e0  6e 64 61 72 64 20 62 69  74 73 20 32 38 2d 33 31  |ndard bits 28-31|
000026f0  20 6f 66 20 74 68 65 20  66 6c 61 67 73 20 77 6f  | of the flags wo|
00002700  72 64 20 68 61 64 0a 61  6e 6f 74 68 65 72 20 75  |rd had.another u|
00002710  73 65 2e 20 54 68 69 73  20 64 61 74 61 20 68 61  |se. This data ha|
00002720  73 20 62 65 65 6e 20 6d  6f 76 65 64 20 74 6f 20  |s been moved to |
00002730  4d 65 73 73 61 67 65 5f  48 6f 6f 6b 4d 65 2e 20  |Message_HookMe. |
00002740  50 6c 65 61 73 65 20 73  65 65 20 62 65 6c 6f 77  |Please see below|
00002750  2e 20 0a 0a 4d 65 73 73  61 67 65 5f 44 6f 59 6f  |. ..Message_DoYo|
00002760  75 72 53 74 75 66 66 28  26 38 33 34 38 36 29 20  |urStuff(&83486) |
00002770  28 4d 73 67 5f 44 6f 25  29 20 0a 2d 2d 2d 2d 2d  |(Msg_Do%) .-----|
00002780  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
000027a0  0a 0a 54 68 65 20 62 6c  6f 63 6b 20 70 6f 69 6e  |..The block poin|
000027b0  74 65 64 20 74 6f 20 62  79 20 52 31 20 63 6f 6e  |ted to by R1 con|
000027c0  74 61 69 6e 73 3a 20 0a  20 0a 52 31 2b 32 30 20  |tains: . .R1+20 |
000027d0  20 20 46 69 6c 65 74 79  70 65 20 6f 66 20 6f 62  |  Filetype of ob|
000027e0  6a 65 63 74 0a 52 31 2b  32 34 20 20 20 41 64 64  |ject.R1+24   Add|
000027f0  72 65 73 73 20 6f 66 20  6f 62 6a 65 63 74 20 74  |ress of object t|
00002800  61 67 0a 52 31 2b 32 38  20 20 20 72 65 73 65 72  |ag.R1+28   reser|
00002810  76 65 64 20 2d 20 30 0a  52 31 2b 33 32 20 20 20  |ved - 0.R1+32   |
00002820  54 6f 6f 6c 20 69 64 0a  52 31 2b 33 36 20 20 20  |Tool id.R1+36   |
00002830  54 6f 6f 6c 20 66 6c 61  67 73 20 77 6f 72 64 0a  |Tool flags word.|
00002840  52 31 2b 34 30 20 20 20  53 74 72 69 6e 67 2e 20  |R1+40   String. |
00002850  4e 61 6d 65 20 6f 66 20  6f 62 6a 65 63 74 20 6f  |Name of object o|
00002860  72 20 6e 75 6c 6c 20 28  26 30 29 20 0a 0a 53 65  |r null (&0) ..Se|
00002870  6e 74 20 62 79 20 4c 6f  63 61 6c 20 74 61 73 6b  |nt by Local task|
00002880  20 74 6f 20 72 65 6d 6f  74 65 20 74 61 73 6b 20  | to remote task |
00002890  64 65 70 65 6e 64 69 6e  67 20 6f 6e 20 65 6e 74  |depending on ent|
000028a0  72 79 20 73 65 6c 65 63  74 65 64 20 69 6e 20 55  |ry selected in U|
000028b0  74 69 6c 69 74 69 65 73  0a 73 75 62 2d 6d 65 6e  |tilities.sub-men|
000028c0  75 2f 64 69 61 6c 6f 67  75 65 2e 20 52 65 6d 6f  |u/dialogue. Remo|
000028d0  74 65 20 74 61 73 6b 20  73 68 6f 75 6c 64 20 72  |te task should r|
000028e0  65 63 6f 72 64 20 74 68  65 20 74 61 67 20 61 64  |ecord the tag ad|
000028f0  64 72 65 73 73 20 61 6e  64 20 6f 70 65 6e 20 69  |dress and open i|
00002900  74 73 0a 77 69 6e 64 6f  77 20 28 6f 72 20 6a 75  |ts.window (or ju|
00002910  73 74 20 69 74 73 20 74  6f 6f 6c 62 61 72 20 69  |st its toolbar i|
00002920  66 20 62 69 74 20 34 20  6f 66 20 74 68 65 20 66  |f bit 4 of the f|
00002930  6c 61 67 73 20 77 6f 72  64 20 69 73 20 73 65 74  |lags word is set|
00002940  29 2e 20 0a 0a 4e 6f 74  65 73 3a 20 0a 0a 49 66  |). ..Notes: ..If|
00002950  20 74 68 65 20 52 65 6d  6f 74 65 20 74 61 73 6b  | the Remote task|
00002960  20 73 65 74 20 62 69 74  20 34 20 6f 66 20 74 68  | set bit 4 of th|
00002970  65 20 66 6c 61 67 73 20  77 6f 72 64 20 69 6e 20  |e flags word in |
00002980  4d 65 73 73 61 67 65 5f  49 6d 48 65 72 65 20 77  |Message_ImHere w|
00002990  68 65 6e 0a 72 65 70 6c  79 69 6e 67 20 74 6f 20  |hen.replying to |
000029a0  20 4d 65 73 73 61 67 65  5f 57 68 6f 73 41 62 6f  | Message_WhosAbo|
000029b0  75 74 20 69 74 20 73 68  6f 75 6c 64 20 63 68 65  |ut it should che|
000029c0  63 6b 20 74 68 61 74 20  74 68 69 73 20 62 69 74  |ck that this bit|
000029d0  20 69 73 20 73 74 69 6c  6c 20 73 65 74 0a 6e 6f  | is still set.no|
000029e0  77 2e 20 49 66 20 69 74  20 68 61 73 20 62 65 65  |w. If it has bee|
000029f0  6e 20 63 6c 65 61 72 65  64 20 74 68 65 6e 20 74  |n cleared then t|
00002a00  68 65 20 4c 6f 63 61 6c  20 74 61 73 6b 20 63 61  |he Local task ca|
00002a10  6e 6e 6f 74 20 68 61 6e  64 6c 65 20 72 65 6d 6f  |nnot handle remo|
00002a20  74 65 0a 6d 65 73 73 61  67 69 6e 67 20 61 6e 64  |te.messaging and|
00002a30  20 74 68 65 20 52 65 6d  6f 74 65 20 74 61 73 6b  | the Remote task|
00002a40  20 6d 75 73 74 20 6f 70  65 6e 20 61 20 73 65 70  | must open a sep|
00002a50  61 72 61 74 65 20 77 69  6e 64 6f 77 20 6f 6e 74  |arate window ont|
00002a60  6f 20 74 68 65 20 6f 62  6a 65 63 74 2e 0a 0a 49  |o the object...I|
00002a70  66 20 62 69 74 20 34 20  69 73 20 73 74 69 6c 6c  |f bit 4 is still|
00002a80  20 73 65 74 20 69 74 20  6d 65 61 6e 73 20 74 68  | set it means th|
00002a90  61 74 20 74 68 65 20 6c  6f 63 61 6c 20 74 61 73  |at the local tas|
00002aa0  6b 20 69 73 20 77 69 6c  6c 69 6e 67 20 74 6f 20  |k is willing to |
00002ab0  70 61 72 74 69 63 69 70  61 74 65 0a 69 6e 20 61  |participate.in a|
00002ac0  6e 20 69 6e 2d 70 6c 61  63 65 20 65 64 69 74 69  |n in-place editi|
00002ad0  6e 67 20 73 65 73 73 69  6f 6e 2e 20 49 6e 20 74  |ng session. In t|
00002ae0  68 69 73 20 63 61 73 65  20 74 68 65 20 52 65 6d  |his case the Rem|
00002af0  6f 74 65 20 74 61 73 6b  20 73 68 6f 75 6c 64 20  |ote task should |
00002b00  73 69 6d 70 6c 79 0a 6f  70 65 6e 20 69 74 73 20  |simply.open its |
00002b10  74 6f 6f 6c 62 61 72 20  61 6e 64 20 73 65 6e 64  |toolbar and send|
00002b20  20 4d 65 73 73 61 67 65  5f 48 6f 6f 6b 4d 65 20  | Message_HookMe |
00002b30  74 6f 20 74 68 65 20 4c  6f 63 61 6c 20 74 61 73  |to the Local tas|
00002b40  6b 20 74 6f 20 61 73 6b  20 69 74 20 74 6f 0a 69  |k to ask it to.i|
00002b50  6e 74 65 72 63 65 70 74  20 6d 6f 75 73 65 20 62  |ntercept mouse b|
00002b60  75 74 74 6f 6e 20 61 6e  64 20 6f 74 68 65 72 20  |utton and other |
00002b70  57 69 6d 70 20 65 76 65  6e 74 73 2e 20 52 65 63  |Wimp events. Rec|
00002b80  65 69 70 74 20 6f 66 20  74 68 69 73 20 6d 65 73  |eipt of this mes|
00002b90  73 61 67 65 20 77 69 6c  6c 0a 61 6c 73 6f 20 63  |sage will.also c|
00002ba0  61 75 73 65 20 74 68 65  20 4c 6f 63 61 6c 20 74  |ause the Local t|
00002bb0  61 73 6b 20 74 6f 20 73  65 6e 64 20 4d 65 73 73  |ask to send Mess|
00002bc0  61 67 65 5f 4f 62 6a 65  63 74 50 6f 73 69 74 69  |age_ObjectPositi|
00002bd0  6f 6e 20 74 6f 20 6d 6f  76 65 20 74 68 65 20 72  |on to move the r|
00002be0  65 6d 6f 74 65 0a 74 61  73 6b 73 20 74 6f 6f 6c  |emote.tasks tool|
00002bf0  62 61 72 20 74 6f 20 74  68 65 20 63 6f 72 72 65  |bar to the corre|
00002c00  63 74 20 70 6f 73 69 74  69 6f 6e 2e 0a 0a 4e 6f  |ct position...No|
00002c10  74 68 69 6e 67 20 61 62  6f 75 74 20 74 68 65 20  |thing about the |
00002c20  73 74 61 6e 64 61 72 64  20 70 72 65 76 65 6e 74  |standard prevent|
00002c30  73 20 74 68 65 20 6f 62  6a 65 63 74 20 63 68 61  |s the object cha|
00002c40  6e 67 69 6e 67 20 74 79  70 65 20 28 65 67 20 66  |nging type (eg f|
00002c50  72 6f 6d 20 73 70 72 69  74 65 0a 74 6f 20 44 72  |rom sprite.to Dr|
00002c60  61 77 66 69 6c 65 29 20  62 65 74 77 65 65 6e 20  |awfile) between |
00002c70  20 4d 65 73 73 61 67 65  5f 57 68 6f 73 41 62 6f  | Message_WhosAbo|
00002c80  75 74 20 61 6e 64 20 74  68 69 73 20 6d 65 73 73  |ut and this mess|
00002c90  61 67 65 2e 20 4f 6e 20  72 65 63 65 69 70 74 20  |age. On receipt |
00002ca0  6f 66 20 74 68 69 73 0a  6d 65 73 73 61 67 65 20  |of this.message |
00002cb0  74 68 65 20 52 65 6d 6f  74 65 20 74 61 73 6b 20  |the Remote task |
00002cc0  6d 75 73 74 20 74 68 65  72 65 66 6f 72 65 20 63  |must therefore c|
00002cd0  68 65 63 6b 20 74 68 65  20 66 69 6c 65 74 79 70  |heck the filetyp|
00002ce0  65 20 66 69 65 6c 64 20  61 6e 64 20 61 73 20 6d  |e field and as m|
00002cf0  75 63 68 0a 6f 66 20 74  68 65 20 6f 62 6a 65 63  |uch.of the objec|
00002d00  74 27 73 20 64 61 74 61  20 73 74 72 75 63 74 75  |t's data structu|
00002d10  72 65 20 61 73 20 6e 65  63 65 73 73 61 72 79 20  |re as necessary |
00002d20  74 6f 20 65 6e 73 75 72  65 20 74 68 61 74 20 69  |to ensure that i|
00002d30  74 20 63 61 6e 20 65 64  69 74 20 74 68 65 0a 6f  |t can edit the.o|
00002d40  62 6a 65 63 74 20 61 6e  64 20 64 65 6c 69 6e 6b  |bject and delink|
00002d50  2f 69 67 6e 6f 72 65 20  74 68 65 20 6d 65 73 73  |/ignore the mess|
00002d60  61 67 65 20 71 75 69 65  74 6c 79 20 69 66 20 74  |age quietly if t|
00002d70  68 65 20 74 79 70 65 20  69 73 20 6e 6f 74 20 74  |he type is not t|
00002d80  6f 20 69 74 73 0a 6c 69  6b 69 6e 67 2e 20 54 68  |o its.liking. Th|
00002d90  69 73 20 61 6c 6c 6f 77  73 20 74 68 65 20 4c 6f  |is allows the Lo|
00002da0  63 61 6c 20 74 61 73 6b  20 74 6f 20 27 6d 6f 76  |cal task to 'mov|
00002db0  65 27 20 61 20 72 65 6d  6f 74 65 20 74 61 73 6b  |e' a remote task|
00002dc0  20 74 6f 20 64 69 66 66  65 72 65 6e 74 0a 6f 62  | to different.ob|
00002dd0  6a 65 63 74 73 20 63 6c  65 61 6e 6c 79 2e 0a 0a  |jects cleanly...|
00002de0  42 65 66 6f 72 65 20 73  65 6e 64 69 6e 67 20 4d  |Before sending M|
00002df0  65 73 73 61 67 65 5f 44  6f 59 6f 75 72 53 74 75  |essage_DoYourStu|
00002e00  66 66 20 77 69 74 68 20  62 69 74 20 34 20 73 65  |ff with bit 4 se|
00002e10  74 20 74 68 65 20 6c 6f  63 61 6c 20 74 61 73 6b  |t the local task|
00002e20  20 73 68 6f 75 6c 64 0a  62 72 6f 61 64 63 61 73  | should.broadcas|
00002e30  74 20 20 4d 65 73 73 61  67 65 5f 55 6e 68 6f 6f  |t  Message_Unhoo|
00002e40  6b 4d 65 20 74 6f 20 70  72 65 76 65 6e 74 20 6d  |kMe to prevent m|
00002e50  6f 72 65 20 74 68 61 6e  20 6f 6e 65 20 72 65 6d  |ore than one rem|
00002e60  6f 74 65 20 74 61 73 6b  20 61 74 74 65 6d 70 74  |ote task attempt|
00002e70  69 6e 67 0a 74 6f 20 64  6f 20 69 6e 2d 70 6c 61  |ing.to do in-pla|
00002e80  63 65 20 65 64 69 74 69  6e 67 20 61 74 20 6f 6e  |ce editing at on|
00002e90  63 65 2e 0a 0a 42 65 66  6f 72 65 20 73 65 6e 64  |ce...Before send|
00002ea0  69 6e 67 20 4d 65 73 73  61 67 65 5f 44 6f 59 6f  |ing Message_DoYo|
00002eb0  75 72 53 74 75 66 66 20  77 69 74 68 20 62 69 74  |urStuff with bit|
00002ec0  20 33 20 73 65 74 20 74  68 65 20 6c 6f 63 61 6c  | 3 set the local|
00002ed0  20 74 61 73 6b 20 73 68  6f 75 6c 64 0a 62 72 6f  | task should.bro|
00002ee0  61 64 63 61 73 74 20 20  4d 65 73 73 61 67 65 5f  |adcast  Message_|
00002ef0  44 65 73 65 6c 65 63 74  20 61 73 20 74 68 65 20  |Deselect as the |
00002f00  72 65 6d 6f 74 65 20 74  61 73 6b 20 69 6e 20 71  |remote task in q|
00002f10  75 65 73 74 69 6f 6e 20  77 61 6e 74 73 20 74 6f  |uestion wants to|
00002f20  20 27 6f 77 6e 27 0a 74  68 65 20 6f 62 6a 65 63  | 'own'.the objec|
00002f30  74 2e 20 0a 0a 4d 65 73  73 61 67 65 5f 44 65 73  |t. ..Message_Des|
00002f40  65 6c 65 63 74 28 26 38  33 34 38 37 29 20 28 4d  |elect(&83487) (M|
00002f50  73 67 5f 44 65 73 65 6c  25 29 20 0a 2d 2d 2d 2d  |sg_Desel%) .----|
00002f60  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00002f80  2d 0a 0a 42 72 6f 61 64  63 61 73 74 20 62 79 20  |-..Broadcast by |
00002f90  4c 6f 63 61 6c 20 74 61  73 6b 20 77 68 65 6e 20  |Local task when |
00002fa0  74 68 65 20 6f 62 6a 65  63 74 20 68 61 73 20 62  |the object has b|
00002fb0  65 65 6e 20 64 65 6c 65  74 65 64 2e 0a 0a 54 68  |een deleted...Th|
00002fc0  65 20 62 6c 6f 63 6b 20  70 6f 69 6e 74 65 64 20  |e block pointed |
00002fd0  74 6f 20 62 79 20 52 31  20 63 6f 6e 74 61 69 6e  |to by R1 contain|
00002fe0  73 3a 20 0a 20 0a 52 31  2b 32 30 20 20 20 46 69  |s: . .R1+20   Fi|
00002ff0  6c 65 74 79 70 65 20 6f  66 20 6f 62 6a 65 63 74  |letype of object|
00003000  2e 0a 52 31 2b 32 34 20  20 20 41 64 64 72 65 73  |..R1+24   Addres|
00003010  73 20 6f 66 20 6f 62 6a  65 63 74 20 74 61 67 20  |s of object tag |
00003020  0a 0a 41 6c 6c 20 54 61  73 6b 73 20 69 6e 74 65  |..All Tasks inte|
00003030  72 65 73 74 65 64 20 69  6e 20 74 68 65 20 6f 62  |rested in the ob|
00003040  6a 65 63 74 20 73 68 6f  75 6c 64 20 63 6c 6f 73  |ject should clos|
00003050  65 20 74 68 65 69 72 20  77 69 6e 64 6f 77 2f 61  |e their window/a|
00003060  62 61 6e 64 6f 6e 20 74  68 65 69 72 0a 6f 70 65  |bandon their.ope|
00003070  72 61 74 69 6f 6e 73 20  61 73 20 74 68 65 20 6f  |rations as the o|
00003080  62 6a 65 63 74 20 69 6e  20 71 75 65 73 74 69 6f  |bject in questio|
00003090  6e 20 68 61 73 20 62 65  65 6e 20 72 65 6d 6f 76  |n has been remov|
000030a0  65 64 20 66 72 6f 6d 20  74 68 65 20 50 43 41 20  |ed from the PCA |
000030b0  73 79 73 74 65 6d 0a 28  75 73 75 61 6c 6c 79 20  |system.(usually |
000030c0  62 65 63 61 75 73 65 20  69 74 20 68 61 73 20 62  |because it has b|
000030d0  65 65 6e 20 64 65 6c 65  74 65 64 29 2e 20 4c 6f  |een deleted). Lo|
000030e0  63 61 6c 20 74 61 73 6b  73 20 20 6d 75 73 74 20  |cal tasks  must |
000030f0  67 65 6e 65 72 61 74 65  20 74 68 69 73 0a 6d 65  |generate this.me|
00003100  73 73 61 67 65 20 77 68  65 6e 20 64 65 6c 65 74  |ssage when delet|
00003110  69 6e 67 20 61 6e 20 6f  62 6a 65 63 74 2c 20 71  |ing an object, q|
00003120  75 69 74 74 69 6e 67 20  65 74 63 2e 20 6f 72 20  |uitting etc. or |
00003130  72 65 6d 6f 74 65 20 74  61 73 6b 73 20 75 73 69  |remote tasks usi|
00003140  6e 67 20 74 68 65 0a 6f  62 6a 65 63 74 20 77 69  |ng the.object wi|
00003150  6c 6c 20 63 72 61 73 68  2e 20 49 66 20 74 68 65  |ll crash. If the|
00003160  20 4c 6f 63 61 6c 20 74  61 73 6b 20 69 73 20 75  | Local task is u|
00003170  73 69 6e 67 20 50 43 41  53 75 70 70 6f 72 74 20  |sing PCASupport |
00003180  66 6f 72 20 74 61 67 20  67 65 6e 65 72 61 74 69  |for tag generati|
00003190  6f 6e 0a 69 74 20 73 68  6f 75 6c 64 20 63 61 6c  |on.it should cal|
000031a0  6c 20 53 57 49 20 50 43  41 5f 44 65 6c 65 74 65  |l SWI PCA_Delete|
000031b0  41 6e 64 4b 69 6c 6c 20  77 68 69 63 68 20 77 69  |AndKill which wi|
000031c0  6c 6c 20 64 65 6c 65 74  65 20 74 68 65 20 74 61  |ll delete the ta|
000031d0  67 20 61 6e 64 20 73 65  6e 64 20 74 68 69 73 0a  |g and send this.|
000031e0  6d 65 73 73 61 67 65 20  69 6e 20 6f 6e 65 20 6f  |message in one o|
000031f0  70 65 72 61 74 69 6f 6e  20 62 75 74 20 6f 6e 6c  |peration but onl|
00003200  79 20 77 68 65 6e 20 74  68 65 20 6f 62 6a 65 63  |y when the objec|
00003210  74 20 72 65 61 6c 6c 79  20 69 73 20 62 65 69 6e  |t really is bein|
00003220  67 20 64 65 6c 65 74 65  64 2e 0a 0a 4e 6f 74 65  |g deleted...Note|
00003230  3a 20 54 68 69 73 20 69  6d 70 6c 69 65 73 20 74  |: This implies t|
00003240  68 61 74 20 74 68 65 20  72 65 6d 6f 74 65 20 74  |hat the remote t|
00003250  61 73 6b 2c 20 6f 6e 20  72 65 63 65 69 70 74 20  |ask, on receipt |
00003260  6f 66 20 74 68 69 73 20  6d 65 73 73 61 67 65 20  |of this message |
00003270  63 61 6e 6e 6f 74 0a 72  65 6c 79 20 6f 6e 20 6d  |cannot.rely on m|
00003280  6f 72 65 20 74 68 61 6e  20 74 68 65 20 74 61 67  |ore than the tag|
00003290  20 61 64 64 72 65 73 73  20 61 73 20 61 20 6b 65  | address as a ke|
000032a0  79 20 74 6f 20 74 68 65  20 6f 62 6a 65 63 74 2e  |y to the object.|
000032b0  20 49 74 20 5f 63 61 6e  6e 6f 74 5f 20 61 63 63  | It _cannot_ acc|
000032c0  65 73 73 0a 74 68 65 20  6f 62 6a 65 63 74 20 64  |ess.the object d|
000032d0  61 74 61 20 76 69 61 20  74 68 65 20 74 61 67 20  |ata via the tag |
000032e0  70 61 73 73 65 64 20 61  73 20 53 57 49 20 50 43  |passed as SWI PC|
000032f0  41 5f 44 65 6c 65 74 65  54 61 67 20 68 61 73 20  |A_DeleteTag has |
00003300  61 6c 72 65 61 64 79 20  62 65 65 6e 0a 63 61 6c  |already been.cal|
00003310  6c 65 64 20 28 74 68 65  20 61 64 64 72 65 73 73  |led (the address|
00003320  20 66 69 65 6c 64 73 20  77 69 74 68 69 6e 20 74  | fields within t|
00003330  68 65 20 74 61 67 20 77  69 6c 6c 20 63 6f 6e 74  |he tag will cont|
00003340  61 69 6e 20 2d 31 20 61  6e 64 20 74 68 65 20 6f  |ain -1 and the o|
00003350  62 6a 65 63 74 0a 64 61  74 61 20 69 74 73 65 6c  |bject.data itsel|
00003360  66 20 6d 61 79 20 77 65  6c 6c 20 68 61 76 65 20  |f may well have |
00003370  62 65 65 6e 20 64 69 73  63 61 72 64 65 64 29 2e  |been discarded).|
00003380  20 54 68 69 73 20 69 73  20 75 6e 61 76 6f 69 64  | This is unavoid|
00003390  61 62 6c 65 20 77 69 74  68 6f 75 74 20 61 20 74  |able without a t|
000033a0  77 6f 0a 6d 65 73 73 61  67 65 20 28 4d 65 73 73  |wo.message (Mess|
000033b0  61 67 65 2f 41 63 6b 29  20 64 65 73 65 6c 65 63  |age/Ack) deselec|
000033c0  74 69 6f 6e 20 73 79 73  74 65 6d 20 77 68 69 63  |tion system whic|
000033d0  68 20 77 6f 75 6c 64 20  62 65 20 6d 6f 72 65 20  |h would be more |
000033e0  64 69 66 66 69 63 75 69  6c 74 20 66 6f 72 0a 74  |difficuilt for.t|
000033f0  61 73 6b 73 20 74 6f 20  68 61 6e 64 6c 65 2e 20  |asks to handle. |
00003400  45 73 70 65 63 69 61 6c  6c 79 20 28 61 73 20 69  |Especially (as i|
00003410  73 20 6f 66 74 65 6e 20  74 68 65 20 63 61 73 65  |s often the case|
00003420  29 20 69 66 20 74 68 65  20 6c 6f 63 61 6c 20 74  |) if the local t|
00003430  61 73 6b 20 69 73 0a 61  62 6f 75 74 20 74 6f 20  |ask is.about to |
00003440  71 75 69 74 2e 20 0a 0a  4d 65 73 73 61 67 65 5f  |quit. ..Message_|
00003450  44 6f 6e 65 4d 79 53 74  75 66 66 28 26 38 33 34  |DoneMyStuff(&834|
00003460  38 38 29 20 28 4d 73 67  5f 44 6f 6e 65 25 29 20  |88) (Msg_Done%) |
00003470  0a 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |.---------------|
00003480  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00003490  2d 2d 2d 2d 2d 2d 2d 2d  0a 0a 42 72 6f 61 64 63  |--------..Broadc|
000034a0  61 73 74 20 62 79 20 61  20 74 61 73 6b 20 77 68  |ast by a task wh|
000034b0  65 6e 20 69 74 20 68 61  73 20 6d 6f 64 69 66 69  |en it has modifi|
000034c0  65 64 20 74 68 65 20 6f  62 6a 65 63 74 2e 20 41  |ed the object. A|
000034d0  6c 6c 20 74 61 73 6b 73  20 61 63 63 65 73 73 69  |ll tasks accessi|
000034e0  6e 67 20 74 68 65 0a 6f  62 6a 65 63 74 20 6f 74  |ng the.object ot|
000034f0  68 65 72 20 74 68 61 6e  20 74 68 65 20 6f 72 69  |her than the ori|
00003500  67 69 6e 61 74 6f 72 20  6f 66 20 74 68 65 20 6d  |ginator of the m|
00003510  65 73 73 61 67 65 20 73  68 6f 75 6c 64 20 72 65  |essage should re|
00003520  63 6f 67 6e 69 73 65 20  74 68 69 73 0a 6d 65 73  |cognise this.mes|
00003530  73 61 67 65 20 61 6e 64  20 72 65 64 72 61 77 20  |sage and redraw |
00003540  74 68 65 20 6f 62 6a 65  63 74 2e 0a 0a 54 68 65  |the object...The|
00003550  20 62 6c 6f 63 6b 20 70  6f 69 6e 74 65 64 20 74  | block pointed t|
00003560  6f 20 62 79 20 52 31 20  63 6f 6e 74 61 69 6e 73  |o by R1 contains|
00003570  3a 20 0a 20 0a 52 31 2b  32 30 20 20 20 30 0a 52  |: . .R1+20   0.R|
00003580  31 2b 32 34 20 20 20 41  64 64 72 65 73 73 20 6f  |1+24   Address o|
00003590  66 20 6f 62 6a 65 63 74  20 74 61 67 0a 20 20 0a  |f object tag.  .|
000035a0  55 73 65 20 74 68 69 73  20 6d 65 73 73 61 67 65  |Use this message|
000035b0  20 66 6f 72 20 27 77 68  6f 6c 65 20 6f 62 6a 65  | for 'whole obje|
000035c0  63 74 20 63 68 61 6e 67  65 64 27 20 6f 70 65 72  |ct changed' oper|
000035d0  61 74 69 6f 6e 73 20 77  68 69 63 68 20 64 6f 20  |ations which do |
000035e0  6e 6f 74 20 69 6e 76 6f  6c 76 65 0a 63 68 61 6e  |not involve.chan|
000035f0  67 65 73 20 74 6f 20 74  68 65 20 6f 62 6a 65 63  |ges to the objec|
00003600  74 27 73 20 62 61 73 69  63 20 73 74 72 75 63 74  |t's basic struct|
00003610  75 72 65 20 28 45 67 2e  20 69 6d 61 67 65 20 66  |ure (Eg. image f|
00003620  69 6c 74 65 72 20 6f 66  20 73 70 72 69 74 65 29  |ilter of sprite)|
00003630  2e 0a 0a 4e 6f 74 65 3a  20 52 65 63 65 69 70 74  |...Note: Receipt|
00003640  20 6f 66 20 74 68 69 73  20 6d 65 73 73 61 67 65  | of this message|
00003650  20 62 79 20 74 68 65 20  4c 6f 63 61 6c 20 74 61  | by the Local ta|
00003660  73 6b 20 73 68 6f 75 6c  64 20 6e 6f 74 20 62 65  |sk should not be|
00003670  20 74 61 6b 65 6e 20 61  73 20 61 6e 0a 69 6e 64  | taken as an.ind|
00003680  69 63 61 74 69 6f 6e 20  74 68 61 74 20 74 68 65  |ication that the|
00003690  20 72 65 6d 6f 74 65 20  74 61 73 6b 20 69 73 20  | remote task is |
000036a0  6e 6f 20 6c 6f 6e 67 65  72 20 69 6e 74 65 72 65  |no longer intere|
000036b0  73 74 65 64 20 69 6e 20  69 74 2e 20 54 68 61 74  |sted in it. That|
000036c0  20 69 73 20 77 68 61 74  0a 4d 65 73 73 61 67 65  | is what.Message|
000036d0  5f 55 6e 68 6f 6f 6b 4d  65 20 69 73 20 66 6f 72  |_UnhookMe is for|
000036e0  2e 20 0a 0a 4d 65 73 73  61 67 65 5f 43 68 61 6e  |. ..Message_Chan|
000036f0  67 65 64 28 26 38 33 34  38 41 29 20 28 4d 73 67  |ged(&8348A) (Msg|
00003700  5f 43 68 61 6e 67 65 64  25 29 20 0a 2d 2d 2d 2d  |_Changed%) .----|
00003710  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00003730  2d 2d 0a 0a 42 72 6f 61  64 63 61 73 74 20 62 79  |--..Broadcast by|
00003740  20 4c 6f 63 61 6c 20 6f  72 20 52 65 6d 6f 74 65  | Local or Remote|
00003750  20 74 61 73 6b 20 77 68  65 6e 20 74 68 65 20 6f  | task when the o|
00003760  62 6a 65 63 74 20 68 61  73 20 63 68 61 6e 67 65  |bject has change|
00003770  64 20 28 65 69 74 68 65  72 20 69 6e 0a 73 69 7a  |d (either in.siz|
00003780  65 20 6f 72 20 69 74 73  20 64 65 74 61 69 6c 73  |e or its details|
00003790  29 2e 20 54 61 73 6b 20  73 68 6f 75 6c 64 20 61  |). Task should a|
000037a0  63 74 20 61 73 20 69 66  20 69 74 20 68 61 64 20  |ct as if it had |
000037b0  67 6f 74 20 61 20 6e 65  77 20 44 6f 59 6f 75 72  |got a new DoYour|
000037c0  53 74 75 66 66 0a 6d 65  73 73 61 67 65 2e 0a 0a  |Stuff.message...|
000037d0  42 72 6f 61 64 63 61 73  74 20 62 79 20 52 65 6d  |Broadcast by Rem|
000037e0  6f 74 65 20 74 61 73 6b  20 61 66 74 65 72 20 69  |ote task after i|
000037f0  74 20 68 61 73 20 63 68  61 6e 67 65 64 20 74 68  |t has changed th|
00003800  65 20 6f 62 6a 65 63 74  27 73 20 73 69 7a 65 2e  |e object's size.|
00003810  20 4c 6f 63 61 6c 20 61  6e 64 0a 6f 74 68 65 72  | Local and.other|
00003820  20 69 6e 74 65 72 65 73  74 65 64 20 52 65 6d 6f  | interested Remo|
00003830  74 65 20 74 61 73 6b 73  20 77 69 6c 6c 20 72 65  |te tasks will re|
00003840  2d 72 65 61 64 20 74 68  65 20 6f 62 6a 65 63 74  |-read the object|
00003850  27 73 20 64 65 74 61 69  6c 73 20 61 6e 64 20 72  |'s details and r|
00003860  65 64 72 61 77 0a 74 68  65 20 6f 62 6a 65 63 74  |edraw.the object|
00003870  2e 0a 0a 54 68 65 20 62  6c 6f 63 6b 20 70 6f 69  |...The block poi|
00003880  6e 74 65 64 20 74 6f 20  62 79 20 52 31 20 63 6f  |nted to by R1 co|
00003890  6e 74 61 69 6e 73 3a 20  0a 20 0a 52 31 2b 32 30  |ntains: . .R1+20|
000038a0  20 20 20 46 69 6c 65 74  79 70 65 20 6f 66 20 6f  |   Filetype of o|
000038b0  62 6a 65 63 74 0a 52 31  2b 32 34 20 20 20 41 64  |bject.R1+24   Ad|
000038c0  64 72 65 73 73 20 6f 66  20 6f 62 6a 65 63 74 20  |dress of object |
000038d0  74 61 67 0a 52 31 2b 32  38 20 20 20 72 65 73 65  |tag.R1+28   rese|
000038e0  72 76 65 64 20 2d 20 30  0a 52 31 2b 33 32 20 20  |rved - 0.R1+32  |
000038f0  20 53 74 72 69 6e 67 2e  20 4e 65 77 20 6e 61 6d  | String. New nam|
00003900  65 20 6f 66 20 6f 62 6a  65 63 74 20 6f 72 20 7a  |e of object or z|
00003910  65 72 6f 20 66 6f 72 20  6e 6f 20 63 68 61 6e 67  |ero for no chang|
00003920  65 2e 0a 20 20 0a 4e 6f  74 65 3a 20 4e 6f 74 68  |e..  .Note: Noth|
00003930  69 6e 67 20 61 62 6f 75  74 20 74 68 65 20 73 74  |ing about the st|
00003940  61 6e 64 61 72 64 20 70  72 65 76 65 6e 74 73 20  |andard prevents |
00003950  74 68 65 20 6f 62 6a 65  63 74 20 63 68 61 6e 67  |the object chang|
00003960  69 6e 67 20 74 79 70 65  20 28 65 67 20 66 72 6f  |ing type (eg fro|
00003970  6d 0a 73 70 72 69 74 65  20 74 6f 20 44 72 61 77  |m.sprite to Draw|
00003980  66 69 6c 65 29 2e 20 4f  6e 20 72 65 63 65 69 70  |file). On receip|
00003990  74 20 6f 66 20 74 68 69  73 20 6d 65 73 73 61 67  |t of this messag|
000039a0  65 20 70 6c 65 61 73 65  20 63 68 65 63 6b 20 74  |e please check t|
000039b0  68 65 20 66 69 6c 65 74  79 70 65 0a 66 69 65 6c  |he filetype.fiel|
000039c0  64 20 61 73 20 77 65 6c  6c 20 61 73 20 61 6c 6c  |d as well as all|
000039d0  20 6e 65 63 65 73 73 61  72 79 20 61 73 70 65 63  | necessary aspec|
000039e0  74 73 20 6f 66 20 74 68  65 20 6f 62 6a 65 63 74  |ts of the object|
000039f0  27 73 20 64 61 74 61 20  73 74 72 75 63 74 75 72  |'s data structur|
00003a00  65 2e 20 49 66 0a 74 68  65 20 6f 62 6a 65 63 74  |e. If.the object|
00003a10  20 69 73 20 6e 6f 74 20  74 6f 20 61 20 52 65 6d  | is not to a Rem|
00003a20  6f 74 65 20 74 61 73 6b  27 73 20 6c 69 6b 69 6e  |ote task's likin|
00003a30  67 20 69 74 20 73 68 6f  75 6c 64 20 73 65 6e 64  |g it should send|
00003a40  20 4d 65 73 73 61 67 65  5f 55 6e 48 6f 6f 6b 0a  | Message_UnHook.|
00003a50  61 6e 64 20 64 65 6c 69  6e 6b 20 71 75 69 65 74  |and delink quiet|
00003a60  6c 79 2e 20 0a 0a 4d 65  73 73 61 67 65 5f 52 65  |ly. ..Message_Re|
00003a70  73 69 7a 65 52 65 71 75  65 73 74 28 26 38 33 34  |sizeRequest(&834|
00003a80  38 42 29 20 28 4d 73 67  5f 52 65 73 69 7a 65 25  |8B) (Msg_Resize%|
00003a90  29 20 0a 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |) .-------------|
00003aa0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00003ab0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 0a 0a  |--------------..|
00003ac0  53 65 6e 74 20 62 79 20  52 65 6d 6f 74 65 20 74  |Sent by Remote t|
00003ad0  61 73 6b 20 74 6f 20 4c  6f 63 61 6c 20 28 74 61  |ask to Local (ta|
00003ae0  73 6b 20 68 61 6e 64 6c  65 20 69 6e 20 52 31 2b  |sk handle in R1+|
00003af0  34 20 6f 66 20 44 6f 59  6f 75 72 53 74 75 66 66  |4 of DoYourStuff|
00003b00  20 6d 65 73 73 61 67 65  29 2e 0a 49 66 20 74 68  | message)..If th|
00003b10  65 20 4c 6f 63 61 6c 20  74 61 73 6b 20 66 61 69  |e Local task fai|
00003b20  6c 73 20 74 6f 20 64 65  61 6c 20 73 75 63 63 65  |ls to deal succe|
00003b30  73 73 66 75 6c 6c 79 20  69 74 20 77 69 6c 6c 20  |ssfully it will |
00003b40  63 6c 61 69 6d 20 74 68  65 20 6d 65 73 73 61 67  |claim the messag|
00003b50  65 2e 0a 0a 54 68 65 20  62 6c 6f 63 6b 20 70 6f  |e...The block po|
00003b60  69 6e 74 65 64 20 74 6f  20 62 79 20 52 31 20 63  |inted to by R1 c|
00003b70  6f 6e 74 61 69 6e 73 3a  20 0a 20 0a 52 31 2b 32  |ontains: . .R1+2|
00003b80  30 20 20 20 30 0a 52 31  2b 32 34 20 20 20 41 64  |0   0.R1+24   Ad|
00003b90  64 72 65 73 73 20 6f 66  20 6f 62 6a 65 63 74 20  |dress of object |
00003ba0  74 61 67 0a 52 31 2b 32  38 20 20 20 72 65 73 65  |tag.R1+28   rese|
00003bb0  72 76 65 64 20 2d 20 30  0a 52 31 2b 33 32 20 20  |rved - 0.R1+32  |
00003bc0  20 4e 65 77 20 73 69 7a  65 2e 20 54 6f 74 61 6c  | New size. Total|
00003bd0  20 73 69 7a 65 20 6f 66  20 6f 62 6a 65 63 74 20  | size of object |
00003be0  73 74 72 75 63 74 75 72  65 0a 20 20 20 20 20 20  |structure.      |
00003bf0  20 20 28 69 6e 63 6c 75  64 69 6e 67 20 68 65 61  |  (including hea|
00003c00  64 65 72 2c 20 6f 66 66  73 65 74 20 74 6f 20 62  |der, offset to b|
00003c10  61 73 65 20 65 74 63 2e  29 20 69 66 20 66 6c 61  |ase etc.) if fla|
00003c20  67 73 20 62 31 0a 20 20  20 20 20 20 20 20 63 6c  |gs b1.        cl|
00003c30  65 61 72 20 6f 74 68 65  72 77 69 73 65 20 6e 65  |ear otherwise ne|
00003c40  77 20 73 69 7a 65 20 6f  66 20 6f 62 6a 65 63 74  |w size of object|
00003c50  20 69 74 73 65 6c 66 2e  0a 52 31 2b 33 36 20 20  | itself..R1+36  |
00003c60  20 46 6c 61 67 73 0a 20  20 20 20 20 20 20 20 20  | Flags.         |
00003c70  20 20 20 20 20 20 62 30  20 73 65 74 20 27 52 65  |      b0 set 'Re|
00003c80  73 69 7a 65 20 61 73 73  6f 63 69 61 74 65 64 20  |size associated |
00003c90  6f 62 6a 65 63 74 73 20  61 73 20 77 65 6c 6c 27  |objects as well'|
00003ca0  0a 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |.               |
00003cb0  62 31 20 73 65 74 20 27  4e 65 77 20 53 69 7a 65  |b1 set 'New Size|
00003cc0  20 69 73 20 66 6f 72 20  6f 62 6a 65 63 74 20 61  | is for object a|
00003cd0  6c 6f 6e 65 20 2d 20 64  6f 65 73 20 6e 6f 74 20  |lone - does not |
00003ce0  69 6e 63 6c 75 64 65 20  68 65 61 64 65 72 2e 27  |include header.'|
00003cf0  20 0a 0a 49 66 20 74 68  65 20 4c 6f 63 61 6c 20  | ..If the Local |
00003d00  74 61 73 6b 20 73 75 63  63 65 65 64 73 20 74 68  |task succeeds th|
00003d10  65 6e 20 69 74 20 77 69  6c 6c 20 73 65 6e 64 20  |en it will send |
00003d20  4d 65 73 73 61 67 65 5f  52 65 73 69 7a 65 41 63  |Message_ResizeAc|
00003d30  6b 20 28 62 61 73 69 63  61 6c 6c 79 2c 0a 63 6f  |k (basically,.co|
00003d40  70 79 20 52 31 2b 38 20  74 6f 20 52 31 2b 31 32  |py R1+8 to R1+12|
00003d50  2c 20 70 75 74 20 4d 65  73 73 61 67 65 20 52 65  |, put Message Re|
00003d60  73 69 7a 65 41 63 6b 20  69 6e 74 6f 20 52 31 2b  |sizeAck into R1+|
00003d70  31 36 2c 20 75 70 64 61  74 65 20 52 31 2b 33 32  |16, update R1+32|
00003d80  20 61 6e 64 0a 72 65 74  75 72 6e 20 74 6f 20 73  | and.return to s|
00003d90  65 6e 64 65 72 29 2e 20  4f 6e 20 72 65 63 65 69  |ender). On recei|
00003da0  70 74 20 6f 66 20 52 65  73 69 7a 65 41 63 6b 20  |pt of ResizeAck |
00003db0  6d 65 73 73 61 67 65 20  74 68 65 20 73 65 6e 64  |message the send|
00003dc0  65 72 20 6f 66 0a 52 65  73 69 7a 65 52 65 71 75  |er of.ResizeRequ|
00003dd0  65 73 74 20 73 68 6f 75  6c 64 20 6d 6f 64 69 66  |est should modif|
00003de0  79 20 74 68 65 20 6f 62  6a 65 63 74 20 61 70 70  |y the object app|
00003df0  72 6f 70 72 69 61 74 65  6c 79 20 28 66 6f 72 20  |ropriately (for |
00003e00  65 78 61 6d 70 6c 65 2c  20 61 64 64 69 6e 67 0a  |example, adding.|
00003e10  72 6f 77 73 2f 63 6f 6c  75 6d 6e 73 20 74 6f 20  |rows/columns to |
00003e20  61 20 73 70 72 69 74 65  29 2e 20 0a 0a 4e 6f 74  |a sprite). ..Not|
00003e30  65 73 3a 0a 20 0a 59 6f  75 20 6d 75 73 74 20 62  |es:. .You must b|
00003e40  65 20 70 72 65 70 61 72  65 64 20 66 6f 72 20 74  |e prepared for t|
00003e50  68 65 20 72 65 73 69 7a  65 20 72 65 71 75 65 73  |he resize reques|
00003e60  74 20 74 6f 20 66 61 69  6c 20 69 6e 20 77 68 69  |t to fail in whi|
00003e70  63 68 20 63 61 73 65 20  69 74 20 69 73 20 74 68  |ch case it is th|
00003e80  65 0a 72 65 73 70 6f 6e  73 69 62 69 6c 69 74 79  |e.responsibility|
00003e90  20 6f 66 20 74 68 65 20  4c 6f 63 61 6c 20 74 61  | of the Local ta|
00003ea0  73 6b 20 74 6f 20 72 65  70 6f 72 74 20 74 6f 20  |sk to report to |
00003eb0  74 68 65 20 75 73 65 72  20 61 6e 64 20 74 68 65  |the user and the|
00003ec0  20 52 65 6d 6f 74 65 20  74 61 73 6b 0a 74 6f 20  | Remote task.to |
00003ed0  63 6f 6e 74 69 6e 75 65  20 73 61 66 65 6c 79 2e  |continue safely.|
00003ee0  0a 0a 49 66 20 74 68 65  20 52 65 73 69 7a 65 41  |..If the ResizeA|
00003ef0  63 6b 20 6d 65 73 73 61  67 65 20 72 65 74 75 72  |ck message retur|
00003f00  6e 73 20 74 6f 20 61 20  52 65 6d 6f 74 65 20 74  |ns to a Remote t|
00003f10  61 73 6b 20 79 6f 75 20  6d 75 73 74 20 63 68 65  |ask you must che|
00003f20  63 6b 20 74 68 61 74 20  74 68 65 0a 66 69 65 6c  |ck that the.fiel|
00003f30  64 20 69 6e 20 52 31 2b  31 32 20 69 73 20 65 71  |d in R1+12 is eq|
00003f40  75 61 6c 20 74 6f 20 74  68 65 20 4d 79 52 65 66  |ual to the MyRef|
00003f50  20 67 65 6e 65 72 61 74  65 64 20 62 79 20 74 68  | generated by th|
00003f60  65 20 52 65 73 69 7a 65  20 6d 65 73 73 61 67 65  |e Resize message|
00003f70  20 79 6f 75 0a 73 65 6e  74 20 74 6f 20 65 6e 73  | you.sent to ens|
00003f80  75 72 65 20 74 68 61 74  20 74 68 65 20 52 65 73  |ure that the Res|
00003f90  69 7a 65 41 63 6b 20 69  73 20 66 6f 72 20 74 68  |izeAck is for th|
00003fa0  65 20 6f 62 6a 65 63 74  20 79 6f 75 20 68 61 76  |e object you hav|
00003fb0  65 20 72 65 71 75 65 73  74 65 64 20 62 65 0a 72  |e requested be.r|
00003fc0  65 73 69 7a 65 64 2e 20  49 66 20 69 74 20 69 73  |esized. If it is|
00003fd0  2c 20 65 6e 73 75 72 65  20 74 68 61 74 20 74 68  |, ensure that th|
00003fe0  65 20 6f 62 6a 65 63 74  20 69 73 20 69 6e 20 61  |e object is in a|
00003ff0  20 72 65 6e 64 65 72 61  62 6c 65 20 73 74 61 74  | renderable stat|
00004000  65 20 62 65 66 6f 72 65  0a 74 68 65 20 6e 65 78  |e before.the nex|
00004010  74 20 57 69 6d 70 5f 50  6f 6c 6c 20 62 79 20 75  |t Wimp_Poll by u|
00004020  70 64 61 74 69 6e 67 20  74 68 65 20 72 65 6c 65  |pdating the rele|
00004030  76 61 6e 74 20 70 61 72  74 73 20 6f 66 20 74 68  |vant parts of th|
00004040  65 20 6f 62 6a 65 63 74  27 73 20 69 6e 74 65 72  |e object's inter|
00004050  6e 61 6c 0a 64 61 74 61  20 73 74 72 75 63 74 75  |nal.data structu|
00004060  72 65 2e 0a 0a 54 68 65  20 6c 6f 63 61 6c 20 74  |re...The local t|
00004070  61 73 6b 27 73 20 6f 6e  6c 79 20 6d 6f 64 69 66  |ask's only modif|
00004080  69 63 61 74 69 6f 6e 20  74 6f 20 74 68 65 20 64  |ication to the d|
00004090  61 74 61 20 61 66 74 65  72 20 61 20 52 65 73 69  |ata after a Resi|
000040a0  7a 65 20 69 73 20 74 6f  20 77 72 69 74 65 0a 6e  |ze is to write.n|
000040b0  65 77 20 73 69 7a 65 20  66 69 65 6c 64 73 20 77  |ew size fields w|
000040c0  68 65 72 65 20 61 70 70  72 6f 70 72 69 61 74 65  |here appropriate|
000040d0  20 61 6e 64 20 74 6f 20  75 70 64 61 74 65 20 74  | and to update t|
000040e0  68 65 20 6f 62 6a 65 63  74 27 73 20 74 61 67 20  |he object's tag |
000040f0  61 64 64 72 65 73 73 0a  66 69 65 6c 64 73 20 69  |address.fields i|
00004100  66 20 74 68 65 20 6f 62  6a 65 63 74 20 6d 6f 76  |f the object mov|
00004110  65 73 2e 20 46 6f 72 20  73 70 72 69 74 65 73 20  |es. For sprites |
00004120  74 68 65 20 6e 65 77 20  74 6f 74 61 6c 20 61 72  |the new total ar|
00004130  65 61 20 73 69 7a 65 20  73 68 6f 75 6c 64 20 62  |ea size should b|
00004140  65 0a 77 72 69 74 74 65  6e 20 69 6e 74 6f 20 27  |e.written into '|
00004150  42 61 73 65 20 6f 66 20  64 61 74 61 27 2b 30 20  |Base of data'+0 |
00004160  2d 20 69 74 20 64 6f 65  73 20 6e 6f 74 20 6b 6e  |- it does not kn|
00004170  6f 77 20 77 68 61 74 20  74 68 65 20 52 65 6d 6f  |ow what the Remo|
00004180  74 65 20 74 61 73 6b 20  69 73 0a 67 6f 69 6e 67  |te task is.going|
00004190  20 74 6f 20 64 6f 20 77  69 74 68 20 74 68 65 20  | to do with the |
000041a0  73 70 72 69 74 65 20 61  6e 64 20 74 68 65 72 65  |sprite and there|
000041b0  66 6f 72 65 20 63 61 6e  6e 6f 74 20 6d 61 6b 65  |fore cannot make|
000041c0  20 61 6e 79 20 6f 74 68  65 72 0a 6d 6f 64 69 66  | any other.modif|
000041d0  69 63 61 74 69 6f 6e 73  20 74 6f 20 74 68 65 20  |ications to the |
000041e0  64 61 74 61 2e 0a 0a 46  6f 72 20 64 61 74 61 20  |data...For data |
000041f0  74 79 70 65 73 20 77 68  69 63 68 20 64 6f 20 6e  |types which do n|
00004200  6f 74 20 73 74 6f 72 65  20 73 69 7a 65 20 77 69  |ot store size wi|
00004210  74 68 69 6e 20 74 68 65  69 72 20 64 61 74 61 20  |thin their data |
00004220  73 74 72 75 63 74 75 72  65 20 74 68 65 6e 20 74  |structure then t|
00004230  68 65 0a 6c 65 6e 67 74  68 20 66 69 65 6c 64 20  |he.length field |
00004240  6f 66 20 74 68 65 20 74  61 67 20 73 68 6f 75 6c  |of the tag shoul|
00004250  64 20 61 6c 73 6f 20 62  65 20 6d 6f 64 69 66 69  |d also be modifi|
00004260  65 64 20 28 61 6c 6f 6e  67 20 77 69 74 68 20 74  |ed (along with t|
00004270  68 65 20 61 64 64 72 65  73 73 0a 66 69 65 6c 64  |he address.field|
00004280  73 20 69 66 20 74 68 65  20 6f 62 6a 65 63 74 20  |s if the object |
00004290  68 61 73 20 74 6f 20 62  65 20 6d 6f 76 65 64 29  |has to be moved)|
000042a0  2e 0a 0a 41 66 74 65 72  20 6d 6f 64 69 66 79 69  |...After modifyi|
000042b0  6e 67 20 74 68 65 20 6f  62 6a 65 63 74 20 74 68  |ng the object th|
000042c0  65 20 52 65 6d 6f 74 65  20 74 61 73 6b 20 6d 75  |e Remote task mu|
000042d0  73 74 20 62 72 6f 61 64  63 61 73 74 20 4d 65 73  |st broadcast Mes|
000042e0  73 61 67 65 5f 43 68 61  6e 67 65 64 20 2e 20 0a  |sage_Changed . .|
000042f0  43 6f 6d 70 6f 73 69 74  69 6f 6e 20 77 69 6c 6c  |Composition will|
00004300  20 72 65 61 64 20 62 69  74 20 7a 65 72 6f 20 6f  | read bit zero o|
00004310  66 20 74 68 65 20 66 6c  61 67 73 20 77 6f 72 64  |f the flags word|
00004320  2e 20 49 66 20 74 68 69  73 20 62 69 74 20 69 73  |. If this bit is|
00004330  20 73 65 74 2c 20 69 74  0a 77 69 6c 6c 20 72 65  | set, it.will re|
00004340  73 69 7a 65 20 6d 61 73  6b 73 20 61 73 73 6f 63  |size masks assoc|
00004350  69 61 74 65 64 20 77 69  74 68 20 74 68 65 20 73  |iated with the s|
00004360  70 72 69 74 65 20 69 6e  20 71 75 65 73 74 69 6f  |prite in questio|
00004370  6e 20 61 73 20 77 65 6c  6c 2e 20 54 68 65 20 61  |n as well. The a|
00004380  6d 6f 75 6e 74 0a 62 79  20 77 68 69 63 68 20 6d  |mount.by which m|
00004390  61 73 6b 73 20 77 69 6c  6c 20 62 65 20 72 65 73  |asks will be res|
000043a0  69 7a 65 64 20 69 73 20  63 61 6c 63 75 6c 61 74  |ized is calculat|
000043b0  65 64 20 66 72 6f 6d 20  74 68 65 20 72 65 73 69  |ed from the resi|
000043c0  7a 65 2d 72 65 71 75 65  73 74 20 66 6f 72 20 74  |ze-request for t|
000043d0  68 65 0a 73 70 72 69 74  65 20 69 74 73 65 6c 66  |he.sprite itself|
000043e0  2e 20 4f 74 68 65 72 20  61 70 70 6c 69 63 61 74  |. Other applicat|
000043f0  69 6f 6e 73 20 63 61 6e  20 69 67 6e 6f 72 65 20  |ions can ignore |
00004400  6f 72 20 61 63 74 20 6f  6e 20 74 68 69 73 20 62  |or act on this b|
00004410  69 74 20 61 73 20 74 68  65 79 0a 77 69 73 68 2e  |it as they.wish.|
00004420  20 54 68 65 20 74 61 73  6b 20 77 68 69 63 68 20  | The task which |
00004430  72 65 71 75 65 73 74 65  64 20 74 68 65 20 72 65  |requested the re|
00004440  73 69 7a 65 20 6d 75 73  74 20 62 65 20 61 62 6c  |size must be abl|
00004450  65 20 74 6f 20 68 61 6e  64 6c 65 20 65 69 74 68  |e to handle eith|
00004460  65 72 0a 61 63 74 69 6f  6e 2e 0a 0a 42 69 74 20  |er.action...Bit |
00004470  6f 6e 65 20 6f 66 20 74  68 65 20 66 6c 61 67 73  |one of the flags|
00004480  20 77 6f 72 64 20 69 73  20 69 6e 74 65 6e 64 65  | word is intende|
00004490  64 20 74 6f 20 66 61 63  69 6c 69 74 61 74 65 20  |d to facilitate |
000044a0  74 68 65 20 72 65 73 69  7a 69 6e 67 20 6f 66 20  |the resizing of |
000044b0  70 61 74 68 73 20 69 6e  0a 44 72 61 77 66 69 6c  |paths in.Drawfil|
000044c0  65 73 20 61 6e 64 20 73  69 6d 69 6c 61 72 20 64  |es and similar d|
000044d0  61 74 61 20 73 74 72 75  63 74 75 72 65 73 20 75  |ata structures u|
000044e0  6e 64 65 72 20 74 68 65  20 50 43 41 20 74 68 6f  |nder the PCA tho|
000044f0  75 67 68 20 6e 6f 20 63  6f 64 65 20 68 61 73 20  |ugh no code has |
00004500  62 65 65 6e 0a 77 72 69  74 74 65 6e 20 74 6f 20  |been.written to |
00004510  64 6f 20 74 68 69 73 20  79 65 74 2e 0a 0a 0a 52  |do this yet....R|
00004520  65 73 69 7a 65 20 53 75  6d 6d 61 72 79 0a 3d 3d  |esize Summary.==|
00004530  3d 3d 3d 3d 3d 3d 3d 3d  3d 3d 3d 3d 0a 0a 54 68  |============..Th|
00004540  69 73 20 69 73 20 77 68  61 74 20 79 6f 75 20 64  |is is what you d|
00004550  6f 20 74 6f 20 63 68 61  6e 67 65 20 74 68 65 20  |o to change the |
00004560  73 69 7a 65 20 6f 66 20  61 6e 20 6f 62 6a 65 63  |size of an objec|
00004570  74 20 79 6f 75 20 61 72  65 20 65 64 69 74 69 6e  |t you are editin|
00004580  67 3a 20 0a 0a 46 72 6f  6d 20 61 20 52 65 6d 6f  |g: ..From a Remo|
00004590  74 65 20 74 61 73 6b 27  73 20 70 6f 69 6e 74 20  |te task's point |
000045a0  6f 66 20 76 69 65 77 3a  20 0a 2d 2d 2d 2d 2d 2d  |of view: .------|
000045b0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
000045c0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 0a 0a 53  |-------------..S|
000045d0  65 6e 64 20 4d 65 73 73  61 67 65 5f 52 65 73 69  |end Message_Resi|
000045e0  7a 65 52 65 71 75 65 73  74 20 61 6e 64 20 6b 65  |zeRequest and ke|
000045f0  65 70 20 6d 79 72 65 66  20 67 65 6e 65 72 61 74  |ep myref generat|
00004600  65 64 20 66 72 6f 6d 20  74 68 65 20 6d 65 73 73  |ed from the mess|
00004610  61 67 65 2e 20 4f 6e 0a  72 65 63 65 69 70 74 20  |age. On.receipt |
00004620  6f 66 20 52 65 73 69 7a  65 41 63 6b 20 63 68 65  |of ResizeAck che|
00004630  63 6b 20 6d 79 72 65 66  2c 20 6d 6f 64 69 66 79  |ck myref, modify|
00004640  20 6f 62 6a 65 63 74 20  64 61 74 61 20 61 6e 64  | object data and|
00004650  20 62 72 6f 61 64 63 61  73 74 0a 4d 65 73 73 61  | broadcast.Messa|
00004660  67 65 5f 43 68 61 6e 67  65 64 20 2e 20 20 0a 0a  |ge_Changed .  ..|
00004670  46 72 6f 6d 20 74 68 65  20 4c 6f 63 61 6c 20 74  |From the Local t|
00004680  61 73 6b 27 73 20 70 6f  69 6e 74 20 6f 66 20 76  |ask's point of v|
00004690  69 65 77 3a 20 0a 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |iew: .----------|
000046a0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
000046b0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 0a 0a 4f 6e 20 72  |----------..On r|
000046c0  65 63 65 69 70 74 20 6f  66 20 4d 65 73 73 61 67  |eceipt of Messag|
000046d0  65 5f 52 65 73 69 7a 65  52 65 71 75 65 73 74 20  |e_ResizeRequest |
000046e0  72 65 73 69 7a 65 20 6f  62 6a 65 63 74 20 69 66  |resize object if|
000046f0  20 70 6f 73 73 69 62 6c  65 2c 20 75 70 64 61 74  | possible, updat|
00004700  65 20 74 68 65 0a 6f 62  6a 65 63 74 73 20 74 61  |e the.objects ta|
00004710  67 20 61 6e 63 68 6f 72  73 20 61 6e 64 20 73 65  |g anchors and se|
00004720  6e 64 20 52 65 73 69 7a  65 41 63 6b 20 6f 74 68  |nd ResizeAck oth|
00004730  65 72 77 69 73 65 20 63  6c 61 69 6d 20 74 68 65  |erwise claim the|
00004740  20 6d 65 73 73 61 67 65  20 61 6e 64 0a 72 65 70  | message and.rep|
00004750  6f 72 74 20 61 6e 20 65  72 72 6f 72 20 74 6f 20  |ort an error to |
00004760  75 73 65 72 2e 20 0a 0a  42 6f 74 68 20 52 65 6d  |user. ..Both Rem|
00004770  6f 74 65 20 61 6e 64 20  4c 6f 63 61 6c 20 74 61  |ote and Local ta|
00004780  73 6b 73 3a 0a 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |sks:.-----------|
00004790  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
000047a0  2d 20 0a 0a 4f 6e 20 72  65 63 65 69 70 74 20 6f  |- ..On receipt o|
000047b0  66 20 4d 65 73 73 61 67  65 5f 43 68 61 6e 67 65  |f Message_Change|
000047c0  64 20 72 65 2d 72 65 61  64 20 74 68 65 20 6f 62  |d re-read the ob|
000047d0  6a 65 63 74 20 68 65 61  64 65 72 20 61 73 20 69  |ject header as i|
000047e0  66 20 69 74 20 77 61 73  20 6e 65 77 6c 79 0a 63  |f it was newly.c|
000047f0  72 65 61 74 65 64 20 61  6e 64 20 72 65 64 72 61  |reated and redra|
00004800  77 20 74 68 65 20 65 6e  74 69 72 65 20 6f 62 6a  |w the entire obj|
00004810  65 63 74 2e 20 28 59 6f  75 20 6d 61 79 20 6e 65  |ect. (You may ne|
00004820  65 64 20 74 6f 20 72 65  67 65 6e 65 72 61 74 65  |ed to regenerate|
00004830  20 61 6e 20 61 72 65 61  20 6f 66 0a 79 6f 75 72  | an area of.your|
00004840  20 77 69 6e 64 6f 77 20  74 68 65 20 73 69 7a 65  | window the size|
00004850  20 6f 66 20 74 68 65 20  6f 6c 64 20 6f 62 6a 65  | of the old obje|
00004860  63 74 20 2d 20 72 65 6d  65 6d 62 65 72 20 74 68  |ct - remember th|
00004870  65 20 6e 65 77 20 6f 62  6a 65 63 74 20 6d 61 79  |e new object may|
00004880  20 6f 63 63 75 70 79 0a  6c 65 73 73 20 73 63 72  | occupy.less scr|
00004890  65 65 6e 20 61 72 65 61  29 2e 20 0a 0a 52 65 73  |een area). ..Res|
000048a0  69 7a 65 20 73 70 65 65  64 20 69 73 73 75 65 73  |ize speed issues|
000048b0  20 0a 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  | .--------------|
000048c0  2d 2d 2d 2d 2d 0a 0a 57  68 65 6e 20 74 68 65 20  |-----..When the |
000048d0  6f 62 6a 65 63 74 20 62  65 69 6e 67 20 72 65 73  |object being res|
000048e0  69 7a 65 64 20 69 73 20  76 65 72 79 20 6c 61 72  |ized is very lar|
000048f0  67 65 2c 20 56 4d 20 28  56 69 72 74 75 61 6c 20  |ge, VM (Virtual |
00004900  4d 65 6d 6f 72 79 29 69  73 20 62 65 69 6e 67 0a  |Memory)is being.|
00004910  75 73 65 64 2c 20 6f 72  20 74 68 65 20 72 65 73  |used, or the res|
00004920  69 7a 65 20 72 65 71 75  65 73 74 73 20 61 72 65  |ize requests are|
00004930  20 66 72 65 71 75 65 6e  74 2c 20 74 68 65 72 65  | frequent, there|
00004940  20 6d 61 79 20 62 65 20  61 20 70 65 72 66 6f 72  | may be a perfor|
00004950  6d 61 6e 63 65 20 69 73  73 75 65 2e 0a 49 6e 20  |mance issue..In |
00004960  73 75 63 68 20 73 69 74  75 61 74 69 6f 6e 73 20  |such situations |
00004970  74 68 65 20 4c 6f 63 61  6c 20 74 61 73 6b 20 73  |the Local task s|
00004980  68 6f 75 6c 64 20 63 6f  6e 73 69 64 65 72 20 6d  |hould consider m|
00004990  6f 76 69 6e 67 20 74 68  65 20 6f 62 6a 65 63 74  |oving the object|
000049a0  20 74 6f 20 74 68 65 0a  74 6f 70 20 6f 66 20 69  | to the.top of i|
000049b0  74 73 20 64 61 74 61 20  73 74 6f 72 61 67 65 20  |ts data storage |
000049c0  61 72 65 61 20 74 6f 20  70 72 65 76 65 6e 74 20  |area to prevent |
000049d0  72 65 70 65 61 74 65 64  20 6d 65 6d 6f 72 79 20  |repeated memory |
000049e0  6d 6f 76 69 6e 67 20 6f  70 65 72 61 74 69 6f 6e  |moving operation|
000049f0  73 2e 0a 49 6e 20 61 70  70 6c 69 63 61 74 69 6f  |s..In applicatio|
00004a00  6e 73 20 77 68 65 72 65  20 6d 61 6e 79 20 73 6d  |ns where many sm|
00004a10  61 6c 6c 20 72 65 73 69  7a 65 20 72 65 71 75 65  |all resize reque|
00004a20  73 74 73 20 61 72 65 20  6c 69 6b 65 6c 79 20 74  |sts are likely t|
00004a30  68 65 6e 20 63 6f 6e 73  69 64 65 72 0a 65 6d 70  |hen consider.emp|
00004a40  6c 6f 79 69 6e 67 20 61  20 74 61 67 20 65 78 74  |loying a tag ext|
00004a50  65 6e 73 69 6f 6e 20 73  79 73 74 65 6d 20 73 69  |ension system si|
00004a60  6d 69 6c 61 72 20 74 6f  20 74 68 65 20 6f 6e 65  |milar to the one|
00004a70  20 64 65 66 69 6e 65 64  20 61 62 6f 76 65 20 66  | defined above f|
00004a80  6f 72 20 74 65 78 74 0a  66 69 6c 65 73 20 74 6f  |or text.files to|
00004a90  20 72 65 64 75 63 65 20  74 68 65 20 66 72 65 71  | reduce the freq|
00004aa0  75 65 6e 63 79 20 6f 66  20 74 68 65 20 72 65 73  |uency of the res|
00004ab0  69 7a 65 20 72 65 71 75  65 73 74 73 2e 20 0a 0a  |ize requests. ..|
00004ac0  4d 65 73 73 61 67 65 5f  55 70 64 61 74 65 41 72  |Message_UpdateAr|
00004ad0  65 61 28 26 38 33 34 38  43 29 20 28 4d 73 67 5f  |ea(&8348C) (Msg_|
00004ae0  55 70 61 72 65 61 25 29  20 0a 2d 2d 2d 2d 2d 2d  |Uparea%) .------|
00004af0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00004b10  2d 2d 0a 0a 42 72 6f 61  64 63 61 73 74 20 62 79  |--..Broadcast by|
00004b20  20 74 61 73 6b 20 77 68  65 6e 20 69 74 20 68 61  | task when it ha|
00004b30  73 20 6d 6f 64 69 66 69  65 64 20 70 61 72 74 20  |s modified part |
00004b40  6f 66 20 61 6e 20 6f 62  6a 65 63 74 2e 20 41 70  |of an object. Ap|
00004b50  70 73 20 69 6e 74 65 72  65 73 74 65 64 20 69 6e  |ps interested in|
00004b60  0a 74 68 65 20 6f 62 6a  65 63 74 20 73 68 6f 75  |.the object shou|
00004b70  6c 64 20 72 65 64 72 61  77 20 74 68 65 20 61 70  |ld redraw the ap|
00004b80  70 72 6f 70 72 69 61 74  65 20 61 72 65 61 20 6f  |propriate area o|
00004b90  66 20 74 68 65 20 6f 62  6a 65 63 74 20 61 73 20  |f the object as |
00004ba0  71 75 69 63 6b 6c 79 20  61 73 0a 70 6f 73 73 69  |quickly as.possi|
00004bb0  62 6c 65 20 69 66 20 74  68 65 79 20 68 61 76 65  |ble if they have|
00004bc0  20 61 20 77 69 6e 64 6f  77 20 6f 6e 74 6f 20 74  | a window onto t|
00004bd0  68 65 20 6f 62 6a 65 63  74 20 6f 70 65 6e 2e 0a  |he object open..|
00004be0  0a 54 68 65 20 62 6c 6f  63 6b 20 70 6f 69 6e 74  |.The block point|
00004bf0  65 64 20 74 6f 20 62 79  20 52 31 20 63 6f 6e 74  |ed to by R1 cont|
00004c00  61 69 6e 73 3a 20 0a 20  0a 52 31 2b 32 30 20 20  |ains: . .R1+20  |
00004c10  20 46 6f 72 6d 61 74 20  6f 66 20 73 75 62 73 65  | Format of subse|
00004c20  71 75 65 6e 74 20 64 61  74 61 20 28 30 29 0a 52  |quent data (0).R|
00004c30  31 2b 32 34 20 20 20 41  64 64 72 65 73 73 20 6f  |1+24   Address o|
00004c40  66 20 6f 62 6a 65 63 74  20 74 61 67 0a 52 31 2b  |f object tag.R1+|
00004c50  32 38 20 20 20 58 6c 6f  77 20 20 28 4f 53 20 75  |28   Xlow  (OS u|
00004c60  6e 69 74 73 20 61 74 20  31 3a 31 20 73 63 61 6c  |nits at 1:1 scal|
00004c70  65 29 0a 52 31 2b 33 32  20 20 20 59 6c 6f 77 20  |e).R1+32   Ylow |
00004c80  20 28 4f 53 20 75 6e 69  74 73 20 61 74 20 31 3a  | (OS units at 1:|
00004c90  31 20 73 63 61 6c 65 29  0a 52 31 2b 33 36 20 20  |1 scale).R1+36  |
00004ca0  20 58 68 69 20 20 20 28  4f 53 20 75 6e 69 74 73  | Xhi   (OS units|
00004cb0  20 61 74 20 31 3a 31 20  73 63 61 6c 65 29 0a 52  | at 1:1 scale).R|
00004cc0  31 2b 34 30 20 20 20 59  68 69 20 20 20 28 4f 53  |1+40   Yhi   (OS|
00004cd0  20 75 6e 69 74 73 20 61  74 20 31 3a 31 20 73 63  | units at 1:1 sc|
00004ce0  61 6c 65 29 20 0a 0a 77  68 65 72 65 20 63 6f 6f  |ale) ..where coo|
00004cf0  72 64 69 6e 61 74 65 73  20 61 72 65 20 72 65 6c  |rdinates are rel|
00004d00  61 74 69 76 65 20 74 6f  20 74 68 65 20 62 6f 74  |ative to the bot|
00004d10  74 6f 6d 20 6c 65 66 74  20 6f 66 20 74 68 65 20  |tom left of the |
00004d20  6f 62 6a 65 63 74 2e 0a  0a 43 75 72 72 65 6e 74  |object...Current|
00004d30  6c 79 20 74 68 69 73 20  69 73 20 74 68 65 20 6f  |ly this is the o|
00004d40  6e 6c 79 20 66 6f 72 6d  61 74 20 73 75 70 70 6f  |nly format suppo|
00004d50  72 74 65 64 20 62 79 20  63 6f 64 65 20 28 77 6f  |rted by code (wo|
00004d60  72 6b 69 6e 67 20 77 69  74 68 20 62 69 74 6d 61  |rking with bitma|
00004d70  70 0a 73 70 72 69 74 65  73 29 2e 0a 0a 4f 74 68  |p.sprites)...Oth|
00004d80  65 72 20 70 72 6f 70 6f  73 65 64 20 66 6f 72 6d  |er proposed form|
00004d90  61 74 73 20 61 72 65 20  61 73 20 66 6f 6c 6c 6f  |ats are as follo|
00004da0  77 73 3a 20 0a 20 0a 52  31 2b 32 30 20 20 20 46  |ws: . .R1+20   F|
00004db0  6f 72 6d 61 74 20 6f 66  20 73 75 62 73 65 71 75  |ormat of subsequ|
00004dc0  65 6e 74 20 64 61 74 61  20 28 31 29 0a 52 31 2b  |ent data (1).R1+|
00004dd0  32 34 20 20 20 41 64 64  72 65 73 73 20 6f 66 20  |24   Address of |
00004de0  6f 62 6a 65 63 74 20 74  61 67 0a 52 31 2b 32 38  |object tag.R1+28|
00004df0  20 20 20 58 6c 6f 77 20  28 44 72 61 77 20 75 6e  |   Xlow (Draw un|
00004e00  69 74 73 20 3d 20 4f 53  20 75 6e 69 74 73 20 3c  |its = OS units <|
00004e10  3c 38 29 0a 52 31 2b 33  32 20 20 20 59 6c 6f 77  |<8).R1+32   Ylow|
00004e20  20 28 44 72 61 77 20 75  6e 69 74 73 20 3d 20 4f  | (Draw units = O|
00004e30  53 20 75 6e 69 74 73 20  3c 3c 38 29 0a 52 31 2b  |S units <<8).R1+|
00004e40  33 36 20 20 20 58 68 69  20 20 28 44 72 61 77 20  |36   Xhi  (Draw |
00004e50  75 6e 69 74 73 20 3d 20  4f 53 20 75 6e 69 74 73  |units = OS units|
00004e60  20 3c 3c 38 29 0a 52 31  2b 34 30 20 20 20 59 68  | <<8).R1+40   Yh|
00004e70  69 20 20 28 44 72 61 77  20 75 6e 69 74 73 20 3d  |i  (Draw units =|
00004e80  20 4f 53 20 75 6e 69 74  73 20 3c 3c 38 29 20 0a  | OS units <<8) .|
00004e90  0a 77 68 65 72 65 20 63  6f 6f 72 64 69 6e 61 74  |.where coordinat|
00004ea0  65 73 20 61 72 65 20 72  65 6c 61 74 69 76 65 20  |es are relative |
00004eb0  74 6f 20 74 68 65 20 62  6f 74 74 6f 6d 20 6c 65  |to the bottom le|
00004ec0  66 74 20 6f 66 20 74 68  65 20 6f 62 6a 65 63 74  |ft of the object|
00004ed0  2e 20 0a 20 0a 52 31 2b  32 30 20 20 20 46 6f 72  |. . .R1+20   For|
00004ee0  6d 61 74 20 6f 66 20 73  75 62 73 65 71 75 65 6e  |mat of subsequen|
00004ef0  74 20 64 61 74 61 20 28  32 29 0a 52 31 2b 32 34  |t data (2).R1+24|
00004f00  20 20 20 41 64 64 72 65  73 73 20 6f 66 20 6f 62  |   Address of ob|
00004f10  6a 65 63 74 20 74 61 67  0a 52 31 2b 32 38 20 20  |ject tag.R1+28  |
00004f20  20 58 6c 6f 77 20 28 44  72 61 77 20 75 6e 69 74  | Xlow (Draw unit|
00004f30  73 20 3d 20 4f 53 20 75  6e 69 74 73 20 3c 3c 38  |s = OS units <<8|
00004f40  29 0a 52 31 2b 33 32 20  20 20 59 6c 6f 77 20 28  |).R1+32   Ylow (|
00004f50  44 72 61 77 20 75 6e 69  74 73 20 3d 20 4f 53 20  |Draw units = OS |
00004f60  75 6e 69 74 73 20 3c 3c  38 29 0a 52 31 2b 33 36  |units <<8).R1+36|
00004f70  20 20 20 58 68 69 20 20  28 44 72 61 77 20 75 6e  |   Xhi  (Draw un|
00004f80  69 74 73 20 3d 20 4f 53  20 75 6e 69 74 73 20 3c  |its = OS units <|
00004f90  3c 38 29 0a 52 31 2b 34  30 20 20 20 59 68 69 20  |<8).R1+40   Yhi |
00004fa0  20 28 44 72 61 77 20 75  6e 69 74 73 20 3d 20 4f  | (Draw units = O|
00004fb0  53 20 75 6e 69 74 73 20  3c 3c 38 29 20 0a 0a 77  |S units <<8) ..w|
00004fc0  68 65 72 65 20 63 6f 6f  72 64 69 6e 61 74 65 73  |here coordinates|
00004fd0  20 61 72 65 20 72 65 6c  61 74 69 76 65 20 74 6f  | are relative to|
00004fe0  20 74 68 65 20 74 6f 70  20 6c 65 66 74 20 6f 66  | the top left of|
00004ff0  20 74 68 65 20 6f 62 6a  65 63 74 2e 0a 0a 49 66  | the object...If|
00005000  20 79 6f 75 20 68 61 76  65 20 61 6e 79 6f 74 68  | you have anyoth|
00005010  65 72 20 73 75 67 67 65  73 74 69 6f 6e 73 20 70  |er suggestions p|
00005020  6c 65 61 73 65 20 63 6f  6e 74 61 63 74 20 43 6c  |lease contact Cl|
00005030  61 72 65 73 20 6f 72 20  74 68 65 20 61 75 74 68  |ares or the auth|
00005040  6f 72 2e 20 0a 0a 4d 65  73 73 61 67 65 5f 52 65  |or. ..Message_Re|
00005050  73 69 7a 65 41 63 6b 28  26 38 33 34 38 44 29 20  |sizeAck(&8348D) |
00005060  28 4d 73 67 5f 52 65 73  69 7a 65 41 63 6b 25 29  |(Msg_ResizeAck%)|
00005070  20 0a 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  | .--------------|
00005080  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00005090  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 0a 0a 53 65  |------------..Se|
000050a0  6e 74 20 62 79 20 4c 6f  63 61 6c 20 74 61 73 6b  |nt by Local task|
000050b0  20 77 68 65 6e 20 61 20  72 65 73 69 7a 65 20 72  | when a resize r|
000050c0  65 71 75 65 73 74 20 68  61 73 20 73 75 63 63 65  |equest has succe|
000050d0  65 64 65 64 2e 20 4f 6e  20 72 65 63 65 69 70 74  |eded. On receipt|
000050e0  20 62 79 20 61 0a 52 65  6d 6f 74 65 20 74 61 73  | by a.Remote tas|
000050f0  6b 2c 20 63 68 65 63 6b  20 74 68 61 74 20 52 31  |k, check that R1|
00005100  2b 31 32 20 69 73 20 74  68 65 20 6d 79 72 65 66  |+12 is the myref|
00005110  20 67 65 6e 65 72 61 74  65 64 20 66 72 6f 6d 0a  | generated from.|
00005120  4d 65 73 73 61 67 65 5f  52 65 73 69 7a 65 52 65  |Message_ResizeRe|
00005130  71 75 65 73 74 20 62 65  66 6f 72 65 20 6d 6f 64  |quest before mod|
00005140  69 66 79 69 6e 67 20 74  68 65 20 6f 62 6a 65 63  |ifying the objec|
00005150  74 20 64 61 74 61 20 73  74 72 75 63 74 75 72 65  |t data structure|
00005160  20 61 6e 64 0a 62 72 6f  61 64 63 61 73 74 69 6e  | and.broadcastin|
00005170  67 20 4d 65 73 73 61 67  65 5f 43 68 61 6e 67 65  |g Message_Change|
00005180  64 20 2e 20 0a 0a 54 68  65 20 62 6c 6f 63 6b 20  |d . ..The block |
00005190  70 6f 69 6e 74 65 64 20  74 6f 20 62 79 20 52 31  |pointed to by R1|
000051a0  20 63 6f 6e 74 61 69 6e  73 3a 20 0a 20 0a 52 31  | contains: . .R1|
000051b0  2b 32 30 20 20 20 72 65  73 65 72 76 65 64 20 2d  |+20   reserved -|
000051c0  20 30 0a 52 31 2b 32 34  20 20 20 41 64 64 72 65  | 0.R1+24   Addre|
000051d0  73 73 20 6f 66 20 6f 62  6a 65 63 74 20 74 61 67  |ss of object tag|
000051e0  0a 52 31 2b 32 38 20 20  20 72 65 73 65 72 76 65  |.R1+28   reserve|
000051f0  64 20 2d 20 30 0a 52 31  2b 33 32 20 20 20 4e 65  |d - 0.R1+32   Ne|
00005200  77 20 73 69 7a 65 20 61  6c 6c 6f 63 61 74 65 64  |w size allocated|
00005210  20 74 6f 20 6f 62 6a 65  63 74 0a 52 31 2b 33 36  | to object.R1+36|
00005220  20 20 20 46 6c 61 67 73  0a 20 20 0a 4d 65 73 73  |   Flags.  .Mess|
00005230  61 67 65 5f 4d 69 73 63  4f 70 28 26 38 33 34 38  |age_MiscOp(&8348|
00005240  45 29 20 28 4d 73 67 5f  4d 69 73 63 25 29 20 0a  |E) (Msg_Misc%) .|
00005250  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00005270  2d 2d 0a 0a 54 68 69 73  20 6d 65 73 73 61 67 65  |--..This message|
00005280  20 69 73 20 64 65 73 69  67 6e 65 64 20 74 6f 20  | is designed to |
00005290  70 72 6f 76 69 64 65 20  61 20 70 72 69 76 61 74  |provide a privat|
000052a0  65 20 69 6e 74 65 72 66  61 63 65 20 6f 70 74 69  |e interface opti|
000052b0  6f 6e 20 66 6f 72 20 50  43 41 0a 70 72 6f 67 72  |on for PCA.progr|
000052c0  61 6d 73 20 77 69 74 68  6f 75 74 20 74 68 65 6d  |ams without them|
000052d0  20 68 61 76 69 6e 67 20  74 6f 20 72 65 71 75 65  | having to reque|
000052e0  73 74 20 6f 74 68 65 72  20 6d 65 73 73 61 67 65  |st other message|
000052f0  20 61 6c 6c 6f 63 61 74  69 6f 6e 73 20 66 72 6f  | allocations fro|
00005300  6d 0a 41 63 6f 72 6e 2e  0a 0a 54 68 65 20 62 6c  |m.Acorn...The bl|
00005310  6f 63 6b 20 70 6f 69 6e  74 65 64 20 74 6f 20 62  |ock pointed to b|
00005320  79 20 52 31 20 63 6f 6e  74 61 69 6e 73 3a 20 0a  |y R1 contains: .|
00005330  20 0a 52 31 2b 32 30 20  20 20 53 75 62 2d 72 65  | .R1+20   Sub-re|
00005340  61 73 6f 6e 20 63 6f 64  65 20 0a 2d 20 6f 74 68  |ason code .- oth|
00005350  65 72 20 64 61 74 61 20  64 65 70 65 6e 64 61 6e  |er data dependan|
00005360  74 20 6f 6e 20 73 75 62  2d 72 65 61 73 6f 6e 20  |t on sub-reason |
00005370  63 6f 64 65 2e 0a 0a 54  68 65 20 73 75 62 2d 72  |code...The sub-r|
00005380  65 61 73 6f 6e 20 63 6f  64 65 73 20 61 76 61 69  |eason codes avai|
00005390  6c 61 62 6c 65 20 74 6f  20 61 70 70 6c 69 63 61  |lable to applica|
000053a0  74 69 6f 6e 20 64 65 76  65 6c 6f 70 65 72 73 20  |tion developers |
000053b0  61 72 65 20 61 6c 6c 6f  63 61 74 65 64 20 69 6e  |are allocated in|
000053c0  0a 6c 69 6e 65 20 77 69  74 68 20 53 57 49 20 61  |.line with SWI a|
000053d0  6e 64 20 4d 65 73 73 61  67 65 20 62 6c 6f 63 6b  |nd Message block|
000053e0  73 20 2d 20 69 66 20 79  6f 75 20 68 61 76 65 20  |s - if you have |
000053f0  6f 6e 65 20 6f 66 20 74  68 65 73 65 20 74 68 65  |one of these the|
00005400  6e 20 74 68 6f 73 65 0a  76 61 6c 75 65 73 20 6d  |n those.values m|
00005410  61 79 20 62 65 20 75 73  65 64 20 62 79 20 79 6f  |ay be used by yo|
00005420  75 72 20 70 72 6f 67 72  61 6d 73 2e 20 57 68 65  |ur programs. Whe|
00005430  72 65 20 61 70 70 72 6f  70 72 69 61 74 65 2c 20  |re appropriate, |
00005440  70 6c 65 61 73 65 20 6d  61 6b 65 20 64 65 74 61  |please make deta|
00005450  69 6c 73 0a 6f 66 20 79  6f 75 72 20 6d 65 73 73  |ils.of your mess|
00005460  61 67 65 73 20 61 76 61  69 6c 61 62 6c 65 20 74  |ages available t|
00005470  6f 20 74 68 65 20 50 43  41 20 63 6f 6d 6d 75 6e  |o the PCA commun|
00005480  69 74 79 20 62 79 20 73  65 6e 64 69 6e 67 20 74  |ity by sending t|
00005490  68 65 6d 20 74 6f 20 43  6c 61 72 65 73 0a 66 6f  |hem to Clares.fo|
000054a0  72 20 64 69 73 74 72 69  62 75 74 69 6f 6e 2e 0a  |r distribution..|
000054b0  0a 43 75 72 72 65 6e 74  6c 79 2c 20 6f 6e 6c 79  |.Currently, only|
000054c0  20 74 77 6f 20 73 75 62  2d 72 65 61 73 6f 6e 73  | two sub-reasons|
000054d0  20 61 72 65 20 64 65 66  69 6e 65 64 20 66 6f 72  | are defined for|
000054e0  20 75 73 65 20 77 69 74  68 20 43 6f 6d 70 6f 73  | use with Compos|
000054f0  69 74 69 6f 6e 2e 20 54  68 65 0a 63 75 72 72 65  |ition. The.curre|
00005500  6e 74 20 66 6f 72 6d 61  74 20 6f 66 20 74 68 65  |nt format of the|
00005510  73 65 20 69 73 20 67 69  76 65 6e 20 62 65 6c 6f  |se is given belo|
00005520  77 20 62 75 74 20 69 73  20 73 75 62 6a 65 63 74  |w but is subject|
00005530  20 74 6f 20 63 68 61 6e  67 65 2e 20 50 6c 65 61  | to change. Plea|
00005540  73 65 0a 63 6f 6e 74 61  63 74 20 43 6c 61 72 65  |se.contact Clare|
00005550  73 20 62 65 66 6f 72 65  20 72 65 6c 65 61 73 69  |s before releasi|
00005560  6e 67 20 70 72 6f 67 72  61 6d 73 20 77 68 69 63  |ng programs whic|
00005570  68 20 72 65 6c 79 20 6f  6e 20 69 74 3a 20 0a 0a  |h rely on it: ..|
00005580  53 75 62 52 65 61 73 6f  6e 5f 47 69 76 65 41 73  |SubReason_GiveAs|
00005590  73 6f 63 69 61 74 65 64  44 61 74 61 20 28 26 38  |sociatedData (&8|
000055a0  33 34 38 30 29 20 0a 2d  2d 2d 2d 2d 2d 2d 2d 2d  |3480) .---------|
000055b0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
000055c0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 0a 0a 42 72  |------------..Br|
000055d0  6f 61 64 63 61 73 74 20  62 79 20 72 65 6d 6f 74  |oadcast by remot|
000055e0  65 20 70 6c 75 67 2d 69  6e 20 77 68 65 6e 20 69  |e plug-in when i|
000055f0  74 20 77 6f 75 6c 64 20  6c 69 6b 65 20 74 6f 20  |t would like to |
00005600  6b 6e 6f 77 20 6d 6f 72  65 20 61 62 6f 75 74 20  |know more about |
00005610  74 68 65 0a 6f 62 6a 65  63 74 2e 0a 0a 54 68 65  |the.object...The|
00005620  20 62 6c 6f 63 6b 20 70  6f 69 6e 74 65 64 20 74  | block pointed t|
00005630  6f 20 62 79 20 52 31 20  63 6f 6e 74 61 69 6e 73  |o by R1 contains|
00005640  3a 20 0a 20 0a 20 20 20  20 20 20 20 20 52 31 2b  |: . .        R1+|
00005650  32 34 20 20 20 41 64 64  72 65 73 73 20 6f 66 20  |24   Address of |
00005660  6f 62 6a 65 63 74 20 74  61 67 20 0a 0a 53 75 62  |object tag ..Sub|
00005670  52 65 61 73 6f 6e 5f 41  73 73 6f 63 69 61 74 65  |Reason_Associate|
00005680  64 44 61 74 61 43 6f 6d  70 6f 20 28 26 38 33 34  |dDataCompo (&834|
00005690  38 31 29 20 0a 0a 53 65  6e 74 20 62 79 20 43 6f  |81) ..Sent by Co|
000056a0  6d 70 6f 20 74 6f 20 52  65 6d 6f 74 65 20 77 68  |mpo to Remote wh|
000056b0  69 63 68 20 62 72 6f 61  64 63 61 73 74 20 47 69  |ich broadcast Gi|
000056c0  76 65 41 73 73 6f 63 69  61 74 65 64 44 61 74 61  |veAssociatedData|
000056d0  20 63 6f 6e 74 61 69 6e  69 6e 67 20 61 20 74 61  | containing a ta|
000056e0  67 0a 70 6f 69 6e 74 69  6e 67 20 74 6f 20 61 20  |g.pointing to a |
000056f0  43 6f 6d 70 6f 20 6f 62  6a 65 63 74 2e 0a 0a 54  |Compo object...T|
00005700  68 65 20 62 6c 6f 63 6b  20 70 6f 69 6e 74 65 64  |he block pointed|
00005710  20 74 6f 20 62 79 20 52  31 20 63 6f 6e 74 61 69  | to by R1 contai|
00005720  6e 73 3a 20 0a 20 0a 20  20 20 20 20 20 20 20 52  |ns: . .        R|
00005730  31 2b 32 34 20 20 20 41  64 64 72 65 73 73 20 6f  |1+24   Address o|
00005740  66 20 6f 62 6a 65 63 74  20 74 61 67 0a 20 20 20  |f object tag.   |
00005750  20 20 20 20 20 52 31 2b  32 38 20 20 20 72 65 73  |     R1+28   res|
00005760  65 72 76 65 64 20 2d 20  30 0a 20 20 20 20 20 20  |erved - 0.      |
00005770  20 20 52 31 2b 33 32 20  20 20 74 77 6f 20 65 69  |  R1+32   two ei|
00005780  67 68 74 20 62 69 74 20  61 6e 64 20 6f 6e 65 20  |ght bit and one |
00005790  73 69 78 74 65 65 6e 20  62 69 74 20 66 69 65 6c  |sixteen bit fiel|
000057a0  64 73 0a 20 20 20 20 20  20 20 20 20 20 20 20 20  |ds.             |
000057b0  20 20 20 62 69 74 73 20  30 2d 37 20 20 20 20 20  |   bits 0-7     |
000057c0  4d 61 73 6b 73 20 69 6e  20 75 73 65 20 62 79 20  |Masks in use by |
000057d0  6f 62 6a 65 63 74 0a 20  20 20 20 20 20 20 20 20  |object.         |
000057e0  20 20 20 20 20 20 20 62  69 74 73 20 38 2d 31 35  |       bits 8-15|
000057f0  20 20 20 20 46 6f 72 6d  61 74 20 6f 66 20 73 75  |    Format of su|
00005800  62 73 65 71 75 65 6e 74  20 64 61 74 61 20 28 7a  |bsequent data (z|
00005810  65 72 6f 29 0a 20 20 20  20 20 20 20 20 20 20 20  |ero).           |
00005820  20 20 20 20 20 62 69 74  73 20 31 36 2d 33 31 20  |     bits 16-31 |
00005830  20 20 52 65 73 65 72 76  65 64 0a 20 20 20 20 20  |  Reserved.     |
00005840  20 20 20 52 31 2b 33 36  20 20 20 52 65 73 65 72  |   R1+36   Reser|
00005850  76 65 64 20 28 30 29 0a  20 20 20 20 20 20 20 20  |ved (0).        |
00005860  52 31 2b 34 30 20 20 20  42 6c 65 6e 64 20 6d 61  |R1+40   Blend ma|
00005870  73 6b 20 61 64 64 72 65  73 73 20 6f 72 20 7a 65  |sk address or ze|
00005880  72 6f 20 20 20 20 3d 20  6e 6f 20 42 6c 65 6e 64  |ro    = no Blend|
00005890  20 6d 61 73 6b 0a 20 20  20 20 20 20 20 20 52 31  | mask.        R1|
000058a0  2b 34 34 20 20 20 54 69  6e 74 20 6d 61 73 6b 20  |+44   Tint mask |
000058b0  61 64 64 72 65 73 73 20  6f 72 20 7a 65 72 6f 20  |address or zero |
000058c0  20 20 20 20 3d 20 6e 6f  20 54 69 6e 74 20 6d 61  |    = no Tint ma|
000058d0  73 6b 0a 20 20 20 20 20  20 20 20 52 31 2b 34 38  |sk.        R1+48|
000058e0  20 20 20 43 75 72 76 65  20 6d 61 73 6b 20 61 64  |   Curve mask ad|
000058f0  64 72 65 73 73 20 6f 72  20 7a 65 72 6f 20 20 20  |dress or zero   |
00005900  20 3d 20 6e 6f 20 43 75  72 76 65 20 6d 61 73 6b  | = no Curve mask|
00005910  0a 20 20 20 20 20 20 20  20 52 31 2b 35 32 20 20  |.        R1+52  |
00005920  20 44 69 73 70 6c 61 63  65 20 6d 61 73 6b 20 61  | Displace mask a|
00005930  64 64 72 65 73 73 20 6f  72 20 7a 65 72 6f 20 3d  |ddress or zero =|
00005940  20 6e 6f 20 44 69 73 70  6c 61 63 65 20 6d 61 73  | no Displace mas|
00005950  6b 0a 20 20 20 20 20 20  20 20 52 31 2b 35 36 20  |k.        R1+56 |
00005960  20 20 53 68 61 64 6f 77  20 6d 61 73 6b 20 61 64  |  Shadow mask ad|
00005970  64 72 65 73 73 20 6f 72  20 7a 65 72 6f 20 20 20  |dress or zero   |
00005980  3d 20 6e 6f 20 53 68 61  64 6f 77 20 6d 61 73 6b  |= no Shadow mask|
00005990  0a 20 20 20 20 20 20 20  20 52 31 2b 36 30 20 20  |.        R1+60  |
000059a0  20 52 65 73 65 72 76 65  64 0a 20 20 20 20 20 20  | Reserved.      |
000059b0  20 20 52 31 2b 36 34 20  20 20 52 65 73 65 72 76  |  R1+64   Reserv|
000059c0  65 64 0a 20 20 20 20 20  20 20 20 52 31 2b 36 38  |ed.        R1+68|
000059d0  20 20 20 4f 70 61 63 69  74 79 20 6f 66 20 6f 62  |   Opacity of ob|
000059e0  6a 65 63 74 20 28 36 35  35 33 36 3d 73 6f 6c 69  |ject (65536=soli|
000059f0  64 20 30 3d 74 72 61 6e  73 70 61 72 65 6e 74 29  |d 0=transparent)|
00005a00  0a 20 20 20 20 20 20 20  20 52 31 2b 37 32 20 20  |.        R1+72  |
00005a10  20 4d 61 74 68 20 74 79  70 65 20 69 6e 20 75 73  | Math type in us|
00005a20  65 20 66 6f 72 20 6f 62  6a 65 63 74 0a 20 20 0a  |e for object.  .|
00005a30  4e 6f 74 65 73 3a 20 54  68 65 20 27 6d 61 73 6b  |Notes: The 'mask|
00005a40  20 61 64 64 72 65 73 73  27 20 70 61 73 73 65 64  | address' passed|
00005a50  20 69 73 20 74 68 65 20  61 64 64 72 65 73 73 20  | is the address |
00005a60  6f 66 20 74 68 65 20 62  61 73 65 20 6f 66 20 61  |of the base of a|
00005a70  20 73 70 72 69 74 65 20  61 72 65 61 0a 63 6f 6e  | sprite area.con|
00005a80  74 61 69 6e 69 6e 67 20  6f 6e 65 20 65 69 67 68  |taining one eigh|
00005a90  74 20 62 69 74 20 67 72  65 79 73 63 61 6c 65 20  |t bit greyscale |
00005aa0  73 70 72 69 74 65 20 28  61 74 20 61 64 64 72 65  |sprite (at addre|
00005ab0  73 73 2b 61 64 64 72 65  73 73 21 38 29 2e 20 54  |ss+address!8). T|
00005ac0  68 65 20 73 69 7a 65 0a  6f 66 20 61 20 6d 61 73  |he size.of a mas|
00005ad0  6b 20 73 68 6f 75 6c 64  20 6e 6f 74 20 62 65 20  |k should not be |
00005ae0  61 73 73 75 6d 65 64 20  74 6f 20 62 65 20 74 68  |assumed to be th|
00005af0  65 20 73 61 6d 65 20 61  73 20 74 68 61 74 20 6f  |e same as that o|
00005b00  66 20 74 68 65 20 6f 62  6a 65 63 74 20 2d 20 72  |f the object - r|
00005b10  65 61 64 0a 69 74 20 66  72 6f 6d 20 74 68 65 20  |ead.it from the |
00005b20  6d 61 73 6b 20 73 70 72  69 74 65 20 64 61 74 61  |mask sprite data|
00005b30  20 6f 72 20 75 73 65 20  4f 53 5f 53 70 72 69 74  | or use OS_Sprit|
00005b40  65 4f 70 20 74 6f 20 65  78 74 72 61 63 74 20 69  |eOp to extract i|
00005b50  74 2e 0a 0a 54 68 65 20  64 61 74 61 20 72 65 74  |t...The data ret|
00005b60  75 72 6e 65 64 20 62 79  20 74 68 69 73 20 6d 65  |urned by this me|
00005b70  73 73 61 67 65 20 69 73  20 66 72 61 67 69 6c 65  |ssage is fragile|
00005b80  20 2d 20 72 65 2d 72 65  61 64 20 77 68 65 6e 65  | - re-read whene|
00005b90  76 65 72 20 79 6f 75 20  77 61 6e 74 20 74 6f 0a  |ver you want to.|
00005ba0  6d 61 6b 65 20 75 73 65  20 6f 66 20 69 74 2e 20  |make use of it. |
00005bb0  0a 0a 4d 65 73 73 61 67  65 5f 49 6e 66 6f 28 26  |..Message_Info(&|
00005bc0  38 33 34 38 46 29 20 28  4d 73 67 5f 49 6e 66 6f  |8348F) (Msg_Info|
00005bd0  25 29 20 0a 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |%) .------------|
00005be0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00005bf0  2d 2d 2d 2d 0a 0a 53 65  6e 74 20 62 79 20 4c 6f  |----..Sent by Lo|
00005c00  63 61 6c 20 74 6f 20 52  65 6d 6f 74 65 20 61 70  |cal to Remote ap|
00005c10  70 6c 69 63 61 74 69 6f  6e 20 77 68 65 6e 20 74  |plication when t|
00005c20  68 65 20 69 6e 66 6f 20  62 75 74 74 6f 6e 20 69  |he info button i|
00005c30  6e 20 74 68 65 20 70 6f  70 2d 75 70 20 69 73 0a  |n the pop-up is.|
00005c40  63 6c 69 63 6b 65 64 2e  0a 0a 54 68 65 20 62 6c  |clicked...The bl|
00005c50  6f 63 6b 20 70 6f 69 6e  74 65 64 20 74 6f 20 62  |ock pointed to b|
00005c60  79 20 52 31 20 63 6f 6e  74 61 69 6e 73 3a 20 0a  |y R1 contains: .|
00005c70  20 0a 52 31 2b 32 30 20  20 20 30 20 0a 0a 52 65  | .R1+20   0 ..Re|
00005c80  6d 6f 74 65 20 61 70 70  6c 69 63 61 74 69 6f 6e  |mote application|
00005c90  20 73 68 6f 75 6c 64 20  77 72 69 74 65 20 61 20  | should write a |
00005ca0  73 75 69 74 61 62 6c 65  20 69 6e 66 6f 20 73 74  |suitable info st|
00005cb0  72 69 6e 67 20 69 6e 74  6f 20 2b 32 30 2c 20 63  |ring into +20, c|
00005cc0  68 61 6e 67 65 20 74 68  65 0a 6d 65 73 73 61 67  |hange the.messag|
00005cd0  65 20 73 69 7a 65 20 61  6e 64 20 72 65 74 75 72  |e size and retur|
00005ce0  6e 20 74 68 65 20 6d 65  73 73 61 67 65 20 74 6f  |n the message to|
00005cf0  20 74 68 65 20 73 65 6e  64 65 72 2e 0a 0a 45 78  | the sender...Ex|
00005d00  61 6d 70 6c 65 20 69 6e  66 6f 20 73 74 72 69 6e  |ample info strin|
00005d10  67 73 3a 0a 0a 22 49 6d  61 67 65 20 46 69 6c 74  |gs:.."Image Filt|
00005d20  65 72 2e 20 4e 6f 20 69  6d 61 67 65 20 6c 69 6e  |er. No image lin|
00005d30  6b 65 64 20 61 74 20 74  68 65 20 6d 6f 6d 65 6e  |ked at the momen|
00005d40  74 2e 22 0a 0a 22 49 6d  61 67 65 20 46 69 6c 74  |t.".."Image Filt|
00005d50  65 72 2e 20 49 6d 61 67  65 20 27 46 61 63 65 27  |er. Image 'Face'|
00005d60  20 6c 69 6e 6b 65 64 20  61 74 20 74 68 65 20 6d  | linked at the m|
00005d70  6f 6d 65 6e 74 2e 22 20  0a 0a 0a 4d 65 73 73 61  |oment." ...Messa|
00005d80  67 65 5f 4f 62 6a 65 63  74 50 6f 73 69 74 69 6f  |ge_ObjectPositio|
00005d90  6e 28 26 38 33 34 39 30  29 20 28 4d 73 67 5f 4f  |n(&83490) (Msg_O|
00005da0  62 6a 50 6f 73 25 29 20  0a 2d 2d 2d 2d 2d 2d 2d  |bjPos%) .-------|
00005db0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00005dd0  2d 2d 2d 2d 2d 0a 0a 54  68 69 73 20 6d 65 73 73  |-----..This mess|
00005de0  61 67 65 20 69 73 20 67  65 6e 65 72 61 74 65 64  |age is generated|
00005df0  20 62 79 20 74 68 65 20  4c 6f 63 61 6c 20 61 70  | by the Local ap|
00005e00  70 6c 69 63 61 74 69 6f  6e 20 61 66 74 65 72 20  |plication after |
00005e10  72 65 63 65 69 70 74 20  6f 66 0a 4d 65 73 73 61  |receipt of.Messa|
00005e20  67 65 5f 48 6f 6f 6b 4d  65 20 2c 20 6f 62 6a 65  |ge_HookMe , obje|
00005e30  63 74 20 72 65 70 6f 73  69 74 69 6f 6e 69 6e 67  |ct repositioning|
00005e40  20 6f 70 65 72 61 74 69  6f 6e 73 20 61 6e 64 20  | operations and |
00005e50  77 69 6e 64 6f 77 20 6f  70 65 6e 20 6f 70 65 72  |window open oper|
00005e60  61 74 69 6f 6e 73 2c 0a  69 66 20 74 68 65 20 4c  |ations,.if the L|
00005e70  6f 63 61 6c 20 61 70 70  6c 69 63 61 74 69 6f 6e  |ocal application|
00005e80  20 73 75 70 70 6f 72 74  73 20 27 49 6e 70 6c 61  | supports 'Inpla|
00005e90  63 65 20 65 64 69 74 69  6e 67 27 2e 0a 0a 54 68  |ce editing'...Th|
00005ea0  65 20 62 6c 6f 63 6b 20  70 6f 69 6e 74 65 64 20  |e block pointed |
00005eb0  74 6f 20 62 79 20 52 31  20 63 6f 6e 74 61 69 6e  |to by R1 contain|
00005ec0  73 3a 20 0a 20 0a 52 31  2b 32 30 20 20 20 30 0a  |s: . .R1+20   0.|
00005ed0  52 31 2b 32 34 20 20 20  41 64 64 72 65 73 73 20  |R1+24   Address |
00005ee0  6f 66 20 6f 62 6a 65 63  74 20 74 61 67 0a 52 31  |of object tag.R1|
00005ef0  2b 32 38 20 20 20 59 20  73 63 61 6c 65 20 6f 66  |+28   Y scale of|
00005f00  20 6f 62 6a 65 63 74 20  69 6e 20 4c 6f 63 61 6c  | object in Local|
00005f10  20 77 69 6e 64 6f 77 20  28 36 35 35 33 36 3d 31  | window (65536=1|
00005f20  3a 31 20 6f 72 20 31 30  30 25 29 0a 52 31 2b 33  |:1 or 100%).R1+3|
00005f30  32 20 20 20 58 6c 6f 77  20 6f 66 20 6f 62 6a 65  |2   Xlow of obje|
00005f40  63 74 20 6f 6e 20 73 63  72 65 65 6e 20 69 6e 20  |ct on screen in |
00005f50  27 4c 6f 63 61 6c 27 20  77 69 6e 64 6f 77 2e 0a  |'Local' window..|
00005f60  52 31 2b 33 36 20 20 20  59 6c 6f 77 20 6f 66 20  |R1+36   Ylow of |
00005f70  6f 62 6a 65 63 74 20 6f  6e 20 73 63 72 65 65 6e  |object on screen|
00005f80  20 69 6e 20 27 4c 6f 63  61 6c 27 20 77 69 6e 64  | in 'Local' wind|
00005f90  6f 77 2e 0a 52 31 2b 34  30 20 20 20 48 61 6e 64  |ow..R1+40   Hand|
00005fa0  6c 65 20 6f 66 20 27 4c  6f 63 61 6c 27 20 77 69  |le of 'Local' wi|
00005fb0  6e 64 6f 77 2e 0a 52 31  2b 34 34 20 20 20 48 61  |ndow..R1+44   Ha|
00005fc0  6e 64 6c 65 20 6f 66 20  4c 6f 63 61 6c 20 77 69  |ndle of Local wi|
00005fd0  6e 64 6f 77 73 20 74 6f  6f 6c 62 61 72 20 77 69  |ndows toolbar wi|
00005fe0  6e 64 6f 77 20 28 6f 72  20 2d 31 20 69 66 20 6e  |ndow (or -1 if n|
00005ff0  6f 20 74 6f 6f 6c 62 61  72 29 0a 52 31 2b 34 38  |o toolbar).R1+48|
00006000  20 20 20 58 20 73 63 61  6c 65 20 66 61 63 74 6f  |   X scale facto|
00006010  72 20 6f 66 20 6f 62 6a  65 63 74 20 69 6e 20 4c  |r of object in L|
00006020  6f 63 61 6c 20 77 69 6e  64 6f 77 20 28 31 36 2e  |ocal window (16.|
00006030  31 36 20 66 6f 72 6d 61  74 20 65 67 20 36 35 35  |16 format eg 655|
00006040  33 36 3d 31 3a 31 20 6f  72 20 31 30 30 25 29 0a  |36=1:1 or 100%).|
00006050  52 31 2b 35 32 20 20 20  58 6c 6f 77 20 6f 66 20  |R1+52   Xlow of |
00006060  6f 62 6a 65 63 74 20 6f  6e 20 73 63 72 65 65 6e  |object on screen|
00006070  20 69 6e 20 4c 6f 63 61  6c 20 77 69 6e 64 6f 77  | in Local window|
00006080  2e 20 28 75 6e 6c 69 6d  69 74 65 64 29 0a 52 31  |. (unlimited).R1|
00006090  2b 35 36 20 20 20 59 6c  6f 77 20 6f 66 20 6f 62  |+56   Ylow of ob|
000060a0  6a 65 63 74 20 6f 6e 20  73 63 72 65 65 6e 20 69  |ject on screen i|
000060b0  6e 20 4c 6f 63 61 6c 20  77 69 6e 64 6f 77 2e 20  |n Local window. |
000060c0  28 75 6e 6c 69 6d 69 74  65 64 29 0a 20 20 0a 4f  |(unlimited).  .O|
000060d0  6e 20 72 65 63 65 69 70  74 2c 20 74 68 65 20 52  |n receipt, the R|
000060e0  65 6d 6f 74 65 20 74 61  73 6b 20 73 68 6f 75 6c  |emote task shoul|
000060f0  64 20 6f 70 65 6e 20 69  74 73 20 74 6f 6f 6c 62  |d open its toolb|
00006100  61 72 2f 69 6e 66 6f 62  61 72 20 72 65 6c 61 74  |ar/infobar relat|
00006110  69 76 65 20 74 6f 20 74  68 65 0a 70 6f 73 69 74  |ive to the.posit|
00006120  69 6f 6e 73 20 69 6e 20  52 31 2b 33 32 20 61 6e  |ions in R1+32 an|
00006130  64 20 52 31 2b 33 36 20  62 65 68 69 6e 64 20 74  |d R1+36 behind t|
00006140  68 65 20 77 69 6e 64 6f  77 20 68 61 6e 64 6c 65  |he window handle|
00006150  20 61 74 20 52 31 2b 34  34 2e 20 54 68 65 0a 63  | at R1+44. The.c|
00006160  6f 6f 72 64 69 6e 61 74  65 73 20 70 61 73 73 65  |oordinates passe|
00006170  64 20 69 6e 20 52 31 2b  33 32 20 61 6e 64 20 52  |d in R1+32 and R|
00006180  31 2b 33 36 20 73 68 6f  75 6c 64 20 62 65 20 6c  |1+36 should be l|
00006190  69 6d 69 74 65 64 20 74  6f 20 74 68 65 20 77 69  |imited to the wi|
000061a0  6e 64 6f 77 73 0a 76 69  73 69 62 6c 65 20 61 72  |ndows.visible ar|
000061b0  65 61 20 28 62 79 20 74  68 65 20 4c 6f 63 61 6c  |ea (by the Local|
000061c0  20 74 61 73 6b 29 20 77  68 69 6c 65 20 74 68 6f  | task) while tho|
000061d0  73 65 20 61 74 20 2b 35  32 20 61 6e 64 20 2b 35  |se at +52 and +5|
000061e0  36 20 73 68 6f 75 6c 64  20 6e 6f 74 2e 20 0a 0a  |6 should not. ..|
000061f0  54 68 65 20 69 6e 66 6f  72 6d 61 74 69 6f 6e 20  |The information |
00006200  61 74 20 52 31 2b 32 38  20 61 6e 64 20 52 31 2b  |at R1+28 and R1+|
00006210  34 38 20 6f 6e 77 61 72  64 73 20 69 73 20 66 6f  |48 onwards is fo|
00006220  72 20 75 73 65 20 62 79  20 74 68 65 20 52 65 6d  |r use by the Rem|
00006230  6f 74 65 20 74 61 73 6b  0a 64 75 72 69 6e 67 20  |ote task.during |
00006240  6d 6f 75 73 65 20 63 6c  69 63 6b 20 6f 70 65 72  |mouse click oper|
00006250  61 74 69 6f 6e 73 20 6f  6e 20 74 68 65 20 6f 62  |ations on the ob|
00006260  6a 65 63 74 2e 20 54 6f  20 63 6f 6e 76 65 72 74  |ject. To convert|
00006270  20 6d 6f 75 73 65 20 63  6f 6f 72 64 69 6e 61 74  | mouse coordinat|
00006280  65 73 0a 72 65 61 64 20  64 69 72 65 63 74 6c 79  |es.read directly|
00006290  20 69 74 20 73 68 6f 75  6c 64 20 73 75 62 74 72  | it should subtr|
000062a0  61 63 74 20 74 68 65 20  76 61 6c 75 65 73 20 61  |act the values a|
000062b0  74 20 52 31 2b 35 32 2c  52 31 2b 35 36 20 66 72  |t R1+52,R1+56 fr|
000062c0  6f 6d 20 74 68 65 20 72  61 77 0a 6d 6f 75 73 65  |om the raw.mouse|
000062d0  78 20 61 6e 64 20 6d 6f  75 73 65 79 20 63 6f 6f  |x and mousey coo|
000062e0  72 64 69 6e 61 74 65 73  2c 20 61 6e 64 20 74 68  |rdinates, and th|
000062f0  65 6e 20 73 63 61 6c 65  20 61 63 63 6f 72 64 69  |en scale accordi|
00006300  6e 67 20 74 6f 20 74 68  65 20 76 61 6c 75 65 20  |ng to the value |
00006310  69 6e 0a 52 31 2b 34 38  2e 20 0a 0a 54 68 65 20  |in.R1+48. ..The |
00006320  58 20 61 6e 64 20 59 20  73 63 61 6c 65 20 66 61  |X and Y scale fa|
00006330  63 74 6f 72 73 20 61 72  65 20 69 6e 20 31 36 2e  |ctors are in 16.|
00006340  31 36 20 66 6f 72 6d 61  74 2e 20 54 6f 20 63 6f  |16 format. To co|
00006350  6e 76 65 72 74 20 61 20  73 63 61 6c 65 20 66 61  |nvert a scale fa|
00006360  63 74 6f 72 0a 69 6e 74  6f 20 74 68 69 73 20 66  |ctor.into this f|
00006370  6f 72 6d 61 74 2c 20 6d  75 6c 74 69 70 6c 79 20  |ormat, multiply |
00006380  62 79 20 31 20 3c 3c 20  31 36 2e 20 46 6f 72 20  |by 1 << 16. For |
00006390  65 78 61 6d 70 6c 65 2c  20 31 30 30 25 20 3d 20  |example, 100% = |
000063a0  61 20 73 63 61 6c 65 20  66 61 63 74 6f 72 20 6f  |a scale factor o|
000063b0  66 0a 6f 6e 65 20 61 6e  64 20 69 73 20 74 68 65  |f.one and is the|
000063c0  72 65 66 6f 72 65 20 28  31 20 3c 3c 20 31 36 29  |refore (1 << 16)|
000063d0  20 2a 20 31 20 77 68 69  63 68 20 69 73 20 36 35  | * 1 which is 65|
000063e0  35 33 36 20 6f 72 20 26  31 30 30 30 30 2e 20 31  |536 or &10000. 1|
000063f0  35 30 25 20 3d 20 61 20  73 63 61 6c 65 0a 66 61  |50% = a scale.fa|
00006400  63 74 6f 72 20 6f 66 20  31 2e 35 20 61 6e 64 20  |ctor of 1.5 and |
00006410  69 73 20 74 68 65 72 65  66 6f 72 65 20 28 31 20  |is therefore (1 |
00006420  3c 3c 20 31 36 29 20 2a  20 31 2e 35 20 77 68 69  |<< 16) * 1.5 whi|
00006430  63 68 20 69 73 20 39 38  33 30 34 20 6f 72 20 26  |ch is 98304 or &|
00006440  31 38 30 30 30 2e 0a 0a  53 65 65 20 74 68 65 20  |18000...See the |
00006450  72 65 6d 6f 74 65 20 70  61 69 6e 74 69 6e 67 20  |remote painting |
00006460  63 6f 64 65 20 28 44 45  46 50 52 4f 43 72 65 6d  |code (DEFPROCrem|
00006470  6f 74 65 5f 77 69 6e 29  20 69 6e 20 21 53 70 61  |ote_win) in !Spa|
00006480  69 6e 74 20 66 6f 72 20  61 20 70 72 61 63 74 69  |int for a practi|
00006490  63 61 6c 0a 65 78 61 6d  70 6c 65 20 6f 66 20 77  |cal.example of w|
000064a0  68 61 74 20 79 6f 75 20  73 68 6f 75 6c 64 20 64  |hat you should d|
000064b0  6f 2e 20 0a 0a 4d 65 73  73 61 67 65 5f 48 6f 6f  |o. ..Message_Hoo|
000064c0  6b 4d 65 28 26 38 33 34  39 31 29 20 28 4d 73 67  |kMe(&83491) (Msg|
000064d0  5f 48 6f 6f 6b 25 29 20  0a 2d 2d 2d 2d 2d 2d 2d  |_Hook%) .-------|
000064e0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
000064f0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 0a 0a 54 68 69  |-----------..Thi|
00006500  73 20 6d 65 73 73 61 67  65 20 69 73 20 73 65 6e  |s message is sen|
00006510  74 20 62 79 20 74 68 65  20 52 65 6d 6f 74 65 20  |t by the Remote |
00006520  74 61 73 6b 20 74 6f 20  74 68 65 20 4c 6f 63 61  |task to the Loca|
00006530  6c 20 74 61 73 6b 2e 20  49 74 20 69 6e 64 69 63  |l task. It indic|
00006540  61 74 65 73 20 74 6f 0a  74 68 65 20 4c 6f 63 61  |ates to.the Loca|
00006550  6c 20 74 61 73 6b 20 74  68 61 74 20 69 74 20 73  |l task that it s|
00006560  68 6f 75 6c 64 20 62 65  67 69 6e 20 69 6e 74 65  |hould begin inte|
00006570  72 63 65 70 74 69 6e 67  20 6d 6f 75 73 65 20 62  |rcepting mouse b|
00006580  75 74 74 6f 6e 20 61 6e  64 20 6f 74 68 65 72 20  |utton and other |
00006590  57 69 6d 70 0a 65 76 65  6e 74 73 20 74 6f 20 74  |Wimp.events to t|
000065a0  68 65 20 6f 62 6a 65 63  74 20 61 6e 64 20 73 65  |he object and se|
000065b0  6e 64 20 74 68 65 6d 20  74 6f 20 74 68 65 20 52  |nd them to the R|
000065c0  65 6d 6f 74 65 20 74 61  73 6b 2e 20 4f 6e 20 72  |emote task. On r|
000065d0  65 63 65 69 70 74 2c 20  74 68 65 20 4c 6f 63 61  |eceipt, the Loca|
000065e0  6c 0a 74 61 73 6b 20 73  68 6f 75 6c 64 20 63 72  |l.task should cr|
000065f0  65 61 74 65 20 61 20 74  72 61 70 20 69 63 6f 6e  |eate a trap icon|
00006600  20 6f 76 65 72 20 74 68  65 20 6f 62 6a 65 63 74  | over the object|
00006610  20 28 75 73 69 6e 67 20  74 68 65 20 62 75 74 74  | (using the butt|
00006620  6f 6e 20 74 79 70 65 20  69 6e 0a 72 31 2b 32 38  |on type in.r1+28|
00006630  29 20 61 6e 64 20 73 65  6e 64 20 4d 65 73 73 61  |) and send Messa|
00006640  67 65 5f 4f 62 6a 65 63  74 50 6f 73 69 74 69 6f  |ge_ObjectPositio|
00006650  6e 2e 0a 0a 54 68 65 20  62 6c 6f 63 6b 20 70 6f  |n...The block po|
00006660  69 6e 74 65 64 20 74 6f  20 62 79 20 52 31 20 63  |inted to by R1 c|
00006670  6f 6e 74 61 69 6e 73 3a  20 0a 20 0a 52 31 2b 32  |ontains: . .R1+2|
00006680  30 20 20 20 30 0a 52 31  2b 32 34 20 20 20 41 64  |0   0.R1+24   Ad|
00006690  64 72 65 73 73 20 6f 66  20 6f 62 6a 65 63 74 20  |dress of object |
000066a0  74 61 67 0a 52 31 2b 32  38 20 20 20 62 69 74 73  |tag.R1+28   bits|
000066b0  20 30 2d 32 37 20 46 6c  61 67 73 20 2d 20 72 65  | 0-27 Flags - re|
000066c0  73 65 72 76 65 64 20 61  6e 64 20 73 65 74 20 74  |served and set t|
000066d0  6f 20 7a 65 72 6f 2e 0a  20 20 20 20 20 20 20 20  |o zero..        |
000066e0  62 69 74 73 20 32 38 2d  33 31 20 57 69 6e 64 6f  |bits 28-31 Windo|
000066f0  77 20 27 77 6f 72 6b 20  61 72 65 61 27 20 62 75  |w 'work area' bu|
00006700  74 74 6f 6e 20 74 79 70  65 20 74 6f 20 75 73 65  |tton type to use|
00006710  20 66 6f 72 20 74 72 61  70 20 69 63 6f 6e 2e 0a  | for trap icon..|
00006720  52 31 2b 33 32 20 20 20  57 69 6e 64 6f 77 20 68  |R1+32   Window h|
00006730  61 6e 64 6c 65 0a 52 31  2b 33 36 20 20 20 53 74  |andle.R1+36   St|
00006740  72 69 6e 67 2e 20 69 6e  64 69 72 65 63 74 69 6f  |ring. indirectio|
00006750  6e 20 73 74 72 69 6e 67  20 66 6f 72 20 69 63 6f  |n string for ico|
00006760  6e 20 6f 72 20 4e 75 6c  6c 20 28 26 30 29 20 0a  |n or Null (&0) .|
00006770  0a 54 6f 20 6d 61 6b 65  20 6c 69 66 65 20 65 61  |.To make life ea|
00006780  73 69 65 72 20 66 6f 72  20 74 68 65 20 72 65 6d  |sier for the rem|
00006790  6f 74 65 20 74 61 73 6b  20 74 68 65 20 4c 6f 63  |ote task the Loc|
000067a0  61 6c 20 74 61 73 6b 20  73 68 6f 75 6c 64 20 61  |al task should a|
000067b0  6c 73 6f 20 74 61 6b 65  20 6e 6f 74 65 0a 6f 66  |lso take note.of|
000067c0  20 74 68 65 20 77 69 6e  64 6f 77 20 68 61 6e 64  | the window hand|
000067d0  6c 65 20 61 74 20 52 31  2b 33 32 20 61 6e 64 20  |le at R1+32 and |
000067e0  69 6e 73 65 72 74 20 74  68 61 74 20 76 61 6c 75  |insert that valu|
000067f0  65 20 69 6e 74 6f 20 74  68 65 20 77 69 6e 64 6f  |e into the windo|
00006800  77 20 68 61 6e 64 6c 65  0a 66 69 65 6c 64 20 77  |w handle.field w|
00006810  68 65 6e 20 70 61 73 73  69 6e 67 20 6f 6e 20 57  |hen passing on W|
00006820  69 6d 70 20 6d 65 73 73  61 67 65 73 2e 20 54 68  |imp messages. Th|
00006830  69 73 20 61 6c 6c 6f 77  73 20 74 68 65 20 72 65  |is allows the re|
00006840  6d 6f 74 65 20 74 61 73  6b 20 74 6f 20 75 73 65  |mote task to use|
00006850  20 6d 75 63 68 0a 6f 66  20 74 68 65 20 73 61 6d  | much.of the sam|
00006860  65 20 63 6f 64 65 20 74  6f 20 64 65 61 6c 20 77  |e code to deal w|
00006870  69 74 68 20 72 65 6d 6f  74 65 6c 79 20 67 65 6e  |ith remotely gen|
00006880  65 72 61 74 65 64 20 6d  65 73 73 61 67 65 73 20  |erated messages |
00006890  61 6e 64 20 6d 65 73 73  61 67 65 73 20 74 6f 0a  |and messages to.|
000068a0  74 68 65 69 72 20 6f 77  6e 20 77 69 6e 64 6f 77  |their own window|
000068b0  2e 0a 0a 54 68 65 20 6f  70 74 69 6f 6e 61 6c 20  |...The optional |
000068c0  69 6e 64 69 72 65 63 74  69 6f 6e 20 73 74 72 69  |indirection stri|
000068d0  6e 67 20 61 74 20 52 31  2b 33 36 20 69 73 20 69  |ng at R1+36 is i|
000068e0  6e 74 65 6e 64 65 64 20  74 6f 20 61 6c 6c 6f 77  |ntended to allow|
000068f0  20 66 6f 72 20 61 64 64  69 6e 67 20 61 0a 6d 6f  | for adding a.mo|
00006900  75 73 65 20 70 6f 69 6e  74 65 72 20 63 68 61 6e  |use pointer chan|
00006910  67 65 20 77 68 65 6e 20  65 6e 74 65 72 69 6e 67  |ge when entering|
00006920  20 69 6e 2d 70 6c 61 63  65 20 65 64 69 74 65 64  | in-place edited|
00006930  20 6f 62 6a 65 63 74 73  2e 20 54 61 6b 65 20 63  | objects. Take c|
00006940  61 72 65 20 77 69 74 68  0a 74 68 69 73 20 73 74  |are with.this st|
00006950  72 69 6e 67 20 61 73 20  63 65 72 74 61 69 6e 20  |ring as certain |
00006960  73 65 74 74 69 6e 67 73  20 63 61 6e 20 64 69 73  |settings can dis|
00006970  72 75 70 74 20 74 68 65  20 4c 6f 63 61 6c 20 74  |rupt the Local t|
00006980  61 73 6b 27 73 20 6d 65  73 73 61 67 65 0a 74 72  |ask's message.tr|
00006990  61 70 70 69 6e 67 2e 20  54 68 69 73 20 65 78 74  |apping. This ext|
000069a0  65 6e 73 69 6f 6e 20 69  73 20 6f 70 74 69 6f 6e  |ension is option|
000069b0  61 6c 2e 20 53 6f 6d 65  20 6c 6f 63 61 6c 20 74  |al. Some local t|
000069c0  61 73 6b 73 20 6d 61 79  20 6e 6f 74 20 73 75 70  |asks may not sup|
000069d0  70 6f 72 74 20 69 74 20  73 6f 0a 64 6f 20 6e 6f  |port it so.do no|
000069e0  74 20 72 65 6c 79 20 6f  6e 20 69 74 2e 0a 0a 49  |t rely on it...I|
000069f0  66 20 74 68 65 20 72 65  6d 6f 74 65 20 74 61 73  |f the remote tas|
00006a00  6b 20 69 73 20 61 6c 72  65 61 64 79 20 65 64 69  |k is already edi|
00006a10  74 69 6e 67 20 61 6e 20  6f 62 6a 65 63 74 20 69  |ting an object i|
00006a20  6e 2d 70 6c 61 63 65 20  28 61 6e 64 20 69 74 20  |n-place (and it |
00006a30  69 73 20 67 6f 69 6e 67  20 74 6f 0a 72 65 70 6c  |is going to.repl|
00006a40  61 63 65 20 69 74 29 20  74 68 65 6e 20 69 74 20  |ace it) then it |
00006a50  73 68 6f 75 6c 64 20 73  65 6e 64 20 4d 65 73 73  |should send Mess|
00006a60  61 67 65 5f 55 6e 68 6f  6f 6b 20 74 6f 20 74 68  |age_Unhook to th|
00006a70  65 20 6c 6f 63 61 6c 20  74 61 73 6b 20 70 72 65  |e local task pre|
00006a80  76 69 6f 75 73 6c 79 0a  62 65 69 6e 67 20 77 6f  |viously.being wo|
00006a90  72 6b 65 64 20 77 69 74  68 20 73 6f 20 74 68 61  |rked with so tha|
00006aa0  74 20 69 74 20 64 65 6c  65 74 65 73 20 69 74 73  |t it deletes its|
00006ab0  20 74 72 61 70 20 69 63  6f 6e 2e 0a 0a 50 6c 65  | trap icon...Ple|
00006ac0  61 73 65 20 73 65 65 20  74 68 65 20 73 65 63 74  |ase see the sect|
00006ad0  69 6f 6e 20 62 65 6c 6f  77 20 6f 6e 20 49 6e 2d  |ion below on In-|
00006ae0  70 6c 61 63 65 20 65 64  69 74 69 6e 67 20 66 6f  |place editing fo|
00006af0  72 20 64 65 74 61 69 6c  73 20 6f 66 20 74 68 65  |r details of the|
00006b00  20 62 65 73 74 0a 6d 65  74 68 6f 64 20 6f 66 20  | best.method of |
00006b10  74 72 61 70 70 69 6e 67  20 6d 65 73 73 61 67 65  |trapping message|
00006b20  73 20 61 6e 64 20 74 68  65 20 61 6c 74 65 72 61  |s and the altera|
00006b30  74 69 6f 6e 73 20 77 68  69 63 68 20 73 68 6f 75  |tions which shou|
00006b40  6c 64 20 62 65 20 6d 61  64 65 20 62 65 66 6f 72  |ld be made befor|
00006b50  65 0a 66 6f 72 77 61 72  64 69 6e 67 20 74 68 65  |e.forwarding the|
00006b60  6d 2e 20 0a 0a 4d 65 73  73 61 67 65 5f 55 6e 68  |m. ..Message_Unh|
00006b70  6f 6f 6b 4d 65 28 26 38  33 34 39 32 29 20 28 4d  |ookMe(&83492) (M|
00006b80  73 67 5f 55 6e 68 6f 6f  6b 25 29 20 0a 2d 2d 2d  |sg_Unhook%) .---|
00006b90  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00006bb0  2d 2d 2d 0a 0a 54 68 69  73 20 6d 65 73 73 61 67  |---..This messag|
00006bc0  65 20 69 73 20 73 65 6e  74 20 62 79 20 61 20 72  |e is sent by a r|
00006bd0  65 6d 6f 74 65 20 74 61  73 6b 20 74 6f 20 74 68  |emote task to th|
00006be0  65 20 4c 6f 63 61 6c 20  74 61 73 6b 20 28 6f 72  |e Local task (or|
00006bf0  20 6c 6f 63 61 6c 20 74  6f 20 72 65 6d 6f 74 65  | local to remote|
00006c00  29 0a 77 68 65 6e 20 69  74 20 77 61 6e 74 73 20  |).when it wants |
00006c10  74 6f 20 27 75 6e 68 6f  6f 6b 27 20 66 72 6f 6d  |to 'unhook' from|
00006c20  20 74 68 65 20 6f 62 6a  65 63 74 2e 0a 0a 54 68  | the object...Th|
00006c30  65 20 62 6c 6f 63 6b 20  70 6f 69 6e 74 65 64 20  |e block pointed |
00006c40  74 6f 20 62 79 20 52 31  20 63 6f 6e 74 61 69 6e  |to by R1 contain|
00006c50  73 3a 20 0a 20 0a 52 31  2b 32 30 20 20 20 30 0a  |s: . .R1+20   0.|
00006c60  52 31 2b 32 34 20 20 20  41 64 64 72 65 73 73 20  |R1+24   Address |
00006c70  6f 66 20 6f 62 6a 65 63  74 20 74 61 67 0a 52 31  |of object tag.R1|
00006c80  2b 32 38 20 20 20 72 65  73 65 72 76 65 64 20 20  |+28   reserved  |
00006c90  2d 20 30 0a 52 31 2b 33  32 20 20 20 57 69 6e 64  |- 0.R1+32   Wind|
00006ca0  6f 77 20 68 61 6e 64 6c  65 0a 52 31 2b 33 36 20  |ow handle.R1+36 |
00006cb0  20 20 55 6e 68 6f 6f 6b  20 27 74 79 70 65 27 0a  |  Unhook 'type'.|
00006cc0  20 20 0a 54 68 69 73 20  6d 65 73 73 61 67 65 20  |  .This message |
00006cd0  73 68 6f 75 6c 64 20 62  65 20 75 73 65 64 20 62  |should be used b|
00006ce0  79 20 61 20 52 65 6d 6f  74 65 20 74 61 73 6b 20  |y a Remote task |
00006cf0  74 6f 20 69 6e 64 69 63  61 74 65 20 69 74 73 20  |to indicate its |
00006d00  6c 61 63 6b 20 6f 66 0a  69 6e 74 65 72 65 73 74  |lack of.interest|
00006d10  20 69 6e 20 61 6e 20 6f  62 6a 65 63 74 2e 20 41  | in an object. A|
00006d20  66 74 65 72 20 73 65 6e  64 69 6e 67 20 74 68 69  |fter sending thi|
00006d30  73 20 6d 65 73 73 61 67  65 20 74 68 65 20 52 65  |s message the Re|
00006d40  6d 6f 74 65 20 74 61 73  6b 20 73 68 6f 75 6c 64  |mote task should|
00006d50  0a 66 6f 72 67 65 74 20  61 6e 79 20 72 65 66 65  |.forget any refe|
00006d60  72 65 6e 63 65 73 20 74  6f 20 74 68 65 20 6f 62  |rences to the ob|
00006d70  6a 65 63 74 20 61 6e 64  20 63 6c 6f 73 65 20 69  |ject and close i|
00006d80  74 73 20 74 6f 6f 6c 62  61 72 20 61 6e 64 2f 6f  |ts toolbar and/o|
00006d90  72 20 77 69 6e 64 6f 77  2e 0a 0a 4c 69 74 74 6c  |r window...Littl|
00006da0  65 20 61 63 74 69 6f 6e  20 6e 65 65 64 20 62 65  |e action need be|
00006db0  20 74 61 6b 65 6e 20 61  74 20 74 68 65 20 4c 6f  | taken at the Lo|
00006dc0  63 61 6c 20 65 6e 64 20  6f 6e 20 72 65 63 65 69  |cal end on recei|
00006dd0  70 74 20 6f 66 20 74 68  69 73 20 6d 65 73 73 61  |pt of this messa|
00006de0  67 65 0a 75 6e 6c 65 73  73 20 27 49 6e 70 6c 61  |ge.unless 'Inpla|
00006df0  63 65 20 65 64 69 74 69  6e 67 27 20 69 73 20 67  |ce editing' is g|
00006e00  6f 69 6e 67 20 6f 6e 20  62 65 74 77 65 65 6e 20  |oing on between |
00006e10  74 68 65 20 74 61 73 6b  73 20 69 6e 20 77 68 69  |the tasks in whi|
00006e20  63 68 20 63 61 73 65 20  69 74 0a 73 68 6f 75 6c  |ch case it.shoul|
00006e30  64 20 72 65 6d 6f 76 65  20 74 68 65 20 74 72 61  |d remove the tra|
00006e40  70 73 20 6f 6e 20 42 75  74 74 6f 6e 20 63 6c 69  |ps on Button cli|
00006e50  63 6b 20 6d 65 73 73 61  67 65 73 20 65 74 63 20  |ck messages etc |
00006e60  66 6f 72 20 74 68 65 20  6f 62 6a 65 63 74 2e 20  |for the object. |
00006e70  49 66 20 74 68 65 0a 4c  6f 63 61 6c 20 74 61 73  |If the.Local tas|
00006e80  6b 20 77 69 73 68 65 73  20 74 6f 20 62 65 20 65  |k wishes to be e|
00006e90  66 66 69 63 69 65 6e 74  20 69 6e 20 69 74 73 20  |fficient in its |
00006ea0  67 65 6e 65 72 61 74 69  6f 6e 20 6f 66 20 50 43  |generation of PC|
00006eb0  41 20 6d 65 73 73 61 67  65 73 20 74 68 65 6e 20  |A messages then |
00006ec0  69 74 0a 73 68 6f 75 6c  64 20 6b 65 65 70 20 61  |it.should keep a|
00006ed0  20 63 6f 75 6e 74 65 72  20 66 6f 72 20 65 61 63  | counter for eac|
00006ee0  68 20 6f 62 6a 65 63 74  20 69 6e 20 74 68 65 20  |h object in the |
00006ef0  50 43 41 20 73 79 73 74  65 6d 2c 20 69 6e 63 72  |PCA system, incr|
00006f00  65 61 73 65 20 74 68 65  0a 63 6f 75 6e 74 65 72  |ease the.counter|
00006f10  20 6f 6e 20 65 61 63 68  20 63 61 6c 6c 20 74 6f  | on each call to|
00006f20  20 4d 65 73 73 61 67 65  5f 44 6f 59 6f 75 72 53  | Message_DoYourS|
00006f30  74 75 66 66 20 61 6e 64  20 64 65 63 72 65 61 73  |tuff and decreas|
00006f40  65 20 69 74 20 6f 6e 20  65 61 63 68 20 72 65 63  |e it on each rec|
00006f50  65 69 70 74 0a 6f 66 20  4d 65 73 73 61 67 65 5f  |eipt.of Message_|
00006f60  55 6e 48 6f 6f 6b 2e 20  54 68 65 6e 20 50 43 41  |UnHook. Then PCA|
00006f70  20 6d 65 73 73 61 67 65  73 20 6e 65 65 64 20 6f  | messages need o|
00006f80  6e 6c 79 20 62 65 20 67  65 6e 65 72 61 74 65 64  |nly be generated|
00006f90  20 69 6e 20 72 65 73 70  6f 6e 73 65 20 74 6f 0a  | in response to.|
00006fa0  63 68 61 6e 67 65 73 20  6d 61 64 65 20 62 79 20  |changes made by |
00006fb0  74 68 65 20 4c 6f 63 61  6c 20 74 61 73 6b 20 69  |the Local task i|
00006fc0  66 20 74 68 65 20 6f 62  6a 65 63 74 73 20 63 6f  |f the objects co|
00006fd0  75 6e 74 65 72 20 69 73  20 67 72 65 61 74 65 72  |unter is greater|
00006fe0  20 74 68 61 6e 20 7a 65  72 6f 2e 0a 57 68 65 6e  | than zero..When|
00006ff0  20 74 68 65 20 63 6f 75  6e 74 65 72 20 72 65 61  | the counter rea|
00007000  63 68 65 73 20 7a 65 72  6f 20 74 68 65 20 4c 6f  |ches zero the Lo|
00007010  63 61 6c 20 74 61 73 6b  20 73 68 6f 75 6c 64 20  |cal task should |
00007020  62 72 6f 61 64 63 61 73  74 0a 4d 65 73 73 61 67  |broadcast.Messag|
00007030  65 5f 44 65 73 65 6c 65  63 74 20 61 73 20 61 20  |e_Deselect as a |
00007040  73 61 66 74 65 79 20 6d  65 61 73 75 72 65 20 74  |saftey measure t|
00007050  6f 20 65 6e 73 75 72 65  20 74 68 61 74 20 61 6c  |o ensure that al|
00007060  6c 20 52 65 6d 6f 74 65  20 74 61 73 6b 73 20 73  |l Remote tasks s|
00007070  74 6f 70 0a 75 73 69 6e  67 20 74 68 65 20 6f 62  |top.using the ob|
00007080  6a 65 63 74 2e 0a 0a 54  68 65 20 27 75 6e 68 6f  |ject...The 'unho|
00007090  6f 6b 20 74 79 70 65 27  20 61 74 20 52 31 2b 33  |ok type' at R1+3|
000070a0  36 20 63 75 72 72 65 6e  74 6c 79 20 68 61 73 20  |6 currently has |
000070b0  74 77 6f 20 64 65 66 69  6e 65 64 20 76 61 6c 75  |two defined valu|
000070c0  65 73 3a 20 0a 20 0a 52  31 2b 33 36 20 20 20 30  |es: . .R1+36   0|
000070d0  20 27 55 6e 68 6f 6f 6b  27 20 69 73 20 74 65 6d  | 'Unhook' is tem|
000070e0  70 6f 72 61 72 79 0a 20  20 20 20 20 20 20 20 20  |porary.         |
000070f0  20 28 75 73 65 64 20 62  79 20 43 6f 6d 70 6f 20  | (used by Compo |
00007100  74 6f 20 73 75 70 70 6f  72 74 20 74 68 65 20 27  |to support the '|
00007110  54 72 61 63 6b 20 73 65  6c 65 63 74 65 64 27 0a  |Track selected'.|
00007120  20 20 20 20 20 20 20 20  20 20 70 72 65 66 65 72  |          prefer|
00007130  65 6e 63 65 20 6f 70 74  69 6f 6e 29 0a 52 31 2b  |ence option).R1+|
00007140  33 36 20 20 20 31 20 27  55 6e 68 6f 6f 6b 27 20  |36   1 'Unhook' |
00007150  69 73 20 70 65 72 6d 61  6e 65 6e 74 20 2d 20 66  |is permanent - f|
00007160  6f 72 67 65 74 20 61 62  6f 75 74 20 74 68 69 73  |orget about this|
00007170  20 50 43 41 2e 20 0a 0a  41 6c 6c 20 76 61 6c 75  | PCA. ..All valu|
00007180  65 73 20 6f 74 68 65 72  20 74 68 61 6e 20 7a 65  |es other than ze|
00007190  72 6f 20 73 68 6f 75 6c  64 20 63 75 72 72 65 6e  |ro should curren|
000071a0  74 6c 79 20 62 65 20 74  72 65 61 74 65 64 20 61  |tly be treated a|
000071b0  73 20 27 70 65 72 6d 61  6e 65 6e 74 27 2e        |s 'permanent'.|
000071be