Hi John
This has to do with the size of the TELNET TCP Tx buffer (the size is defined in app_hw_xxx.h in the buffered TCP section).
See the following for more details on buffered TCP mode of operation as used by TELNET:
http://www.utasker.com/forum/index.php?topic=25.msg101#msg101Sending large amounts of data is a bit of a challenge when only small amounts of RAM are available since TCP, being a reliable protocol, must always be able to regenerate lost data packets. This means that there must be a backup of the data kept until it is sure that it has been delivered. To allow larger menus to be displayed, it is simple to increase the size of the buffer (#define TCP_BUFFER 4096 for example) to allow up to this size of waiting data to be added to the buffer.
If the buffer gets overrun, the following data is lost (the bytes with no space are dropped, as you are seeing).
With limited memory, simply increasing the buffer space is often not an alternative so a different solution is required. The demo project does in fact include an example of how this can work. The demo project intentionally uses quite a small TCP buffer size with the TELNET interface and a menu rather larger than it. If you look at the menu generation in
debug.c you will see that the space available in the buffer is first checked as each line of the menu is generated. If there is enough space, the data is simply copied. If there is not enough space, the menu generation is interrupted and the task waits for the TX_FREE event (informing of buffer space availability) before continuing.
Of course this makes the code slightly more complicated (but not really difficult) but allows efficent TELNET operation (using windowing on transmission for high speed) but requiring only quite a small amount of memory.
Good luck
Regards
Mark
Note: the TCP buffer space is taken from the heap. Ensure that the heap size allocation is adequate to enable any increased buffer size.