
my comments:

packet sample for chat string:

X1234567892#Main\0Nick\0text of string\0

^^        ^^    ^ ^   ^ ^             ^-----    0x00 == string splitter
||        ||    | |   | |-------------------    plain text to display on chat
||        ||    | |   |---------------------    0x00 == string splitter
||        ||    | |-------------------------    nick
||        ||    |---------------------------    0x00 == string splitter
||        ||--------------------------------    channel
||        |---------------------------------    0x32 == type of packet - chat
||------------------------------------------    packet id
|-------------------------------------------    0x58 == Vypress Chat

i'd recommend to compile eChat with -DDEBUG enabled
then see debug file - that may be useful

here my translation of original from Vypress:

==============================================================================

Each packet starting with byte 0x58('X'), so older versions
dont receive that packets (format changed).

Next 9 symbols contain unique ID of packet -
for filtering dupe packets.
Symbols may be from 0x20 to 0x7F.

Then there are different bytes for each type of packet:

**********************************************************************************************
*** Packet from list updater (Who here)

  '0' + <Name of updater> + #0
                            ^^^ - its a single byte 0x00,
                                  showing end of a line


**********************************************************************************************
*** Answer to the previous packet ("Im here")

  '1' + <Name of updater> + #0 + <Name of responder> + #0 + Status + 
RemoteActive
                                                            ^^^^^
                                                          status of responder 
(byte)
                                                          '0' - Normal
                                                          '1' - DND
                                                          '2' - Away
                                                          '3' - Offline
                                                                      ^^^^^
                                                                    window 
state (byte)
                                                                    '0' - 
active
                                                                    '1' - not 
active

**********************************************************************************************
*** Simple chat string on the channel

  '2' + <Name of channel> + #0 + <Name of author> + #0 + <Text> + #0


**********************************************************************************************
*** Nick change

  '3' + <From who> + #0 + <To who> + #0 +  Gender
                                           ^^^^ - gender of the user
                                                  '0' - male
                                                  '1' - female

**********************************************************************************************
*** Join to channel

  '4' + <Who joined> + #0 + <Name of channel> + #0 + Status + Gender

**********************************************************************************************
*** Leave from channel

  '5' + <Who leaved> + #0 + <Name of channel> + #0 + Gender

**********************************************************************************************
*** Message

  '6' + <From who> + #0 + <To who> + #0 + <Text> + #0

**********************************************************************************************
*** Multiaddress message

  'E' + <From who> + #0 + <To who> + #0 + <Text> + #0

**********************************************************************************************
*** Message ack

  '7' + Status + <sender nick> + #0 + <your nick> + #0 + Gender + CurrentAA +
#0
                                                                    ^^^^^^^^^
                                                                    current 
autoanswer (may be empty, for ex in Normal mode)

**********************************************************************************************
*** Remote execution

  '8' + <Who execute> + #0 + <To who> + #0 + <Command line> + #0 + <Password> +
#0
                                                                    ^^^^^^^^
                                                                    may be 
empty

**********************************************************************************************
*** Execution ack

  '9' + <To who> + #0 + <From who> + #0 + <Execution text> + #0

**********************************************************************************************
*** /ME on the channels

  'A' + <Name of channel> + #0 + <Who said> + #0 + <Text> + #0

**********************************************************************************************
*** New topic

  'B' + <Name of channel> + #0 + <Text of topic> + ' (' + <Name of author> + ')
' + #0

**********************************************************************************************
*** Current topic (sending to each who join channel)

  'C' + <To who> + #0 + <Name of channel> + #0 + <Text of topic> + #0

**********************************************************************************************
*** Change of status

  'D' + <Who changed> + #0 + Status + Gender + CurrentAA + #0

**********************************************************************************************
*** INFO request

  'F' + <To who> + #0 + <From who> + #0

**********************************************************************************************
*** INFO request ack

  'G' + <To who> + #0 + <From who> + #0 + <Computer name> + #0 + <User name> + 
#0 + <IP addresses> + #0 + <List of channels - one string without splitting> + 
'#' + #0 + CurrentAA + #0

**********************************************************************************************
*** BEEP

  signal
  'H' + '0' + <To who> + #0 + <From who> + #0

  ack
  'H' + '1' + <To who> + #0 + <From who> + #0 + Gender

**********************************************************************************************
*** Sound request

  'I' + <From who> + #0 + <File name> + #0 + <Name of channel> + #0

**********************************************************************************************
*** Private

  join to chat
  'J' + '0' + <From who> + #0 + <To who> + #0 + Gender

  leave chat
  'J' + '1' + <From who> + #0 + <To who> + #0 + Gender

  Simple string
  'J' + '2' + <From who> + #0 + <To who> + #0 + <Text> + #0

  "/me" string
  'J' + '3' + <From who> + #0 + <To who> + #0 + <Text> + #0

**********************************************************************************************
*** /HERE request

  'L' + <From who> + #0 + <Name of channel> + #0

**********************************************************************************************
*** /HERE ack

  'K' + <To who> + #0 + <Name of channel> + #0 + <From who> + #0 + RemoteActive

**********************************************************************************************
*** Activity change

  'M' + <From who> + #0 + RemoteActive

**********************************************************************************************
*** Request for channel list

  'N' + <From who> + #0

**********************************************************************************************
*** Request for channel list ack

  'O' + <To who> + #0 + <List of channels - one string without splitting> + '#'
+ #0

**********************************************************************************************
*** Ping   (not implemented - SeaD)

  ping
  'P' + '0' + <To who> + #0 + <From who> + #0 + <Time hh:mm:ss - 8 symbols> + 
#0

  pong
  'P' + '1' + <To who> + #0 + <From who> + #0 + <Received time sending back 
hh:mm:ss - 8 symbols> + #0)

**********************************************************************************************
