As mentioned earlier, a message contains both system header information and the actual message content. The system header is of the Message form defined in <exec/ports.h> and <exec/ports.i>. in c this structure is as follows: struct Message { struct Node mn_Node; struct MsgPort *mn_ReplyPort; UWORD mn_Length; }; mn_Node is a standard node structure used for port linkage. mn_ReplyPort is used to indicate a port to which this message will be returned when a reply is necessary. mn_Length indicates the total length of the message, including the Message structure itself. This structure is always attached to the head of all messages. For example, if you want a message structure that contains the x and y coordinates of a point on the screen, you could define it as follows: struct XYMessage { struct Message xy_Msg; UWORD xy_X; UWORD xy_Y; } For this structure, the mn_Length field should be set to sizeof(struct XYMessage). putting a message getting a message waiting for a message replying