Sim68K Network I/O



EASy68K supports both TCP and UDP communications.

TCP
TCP (Transmission Control Protocol) provides reliable delivery of data. Large messages are automatically broken into smaller IP-sized packets, transmitted, received and reassembled in order by the receiver. Packets that are lost during transmission are automatically retransmitted. The reliability of TCP message delivery can result in long delays (on the order of seconds) if packets are lost and must be retransmitted. For this reason TCP is typically not considered suitable for the delivery of real-time data. TCP establishes a connection between the two devices. This connection is maintained until broken by one or both devices. In EASy68K only one TCP connection is permitted at a time. If the other host breaks the connection an error will result when attempting to send or receive data. Refer to the error codes below.

UDP
UDP (User Datagram Protocol) is a connectionless protocol that does not guarantee data delivery. Data packets may arrive out of order, be duplicated, or not delivered at all. UDP is typically used for time sensitive applications where timely delivery of data is more important than reliability. Because of it's connectionless nature a UDP server may receive transmissions from multiple UDP clients.

EASy68K uses non-blocking sockets which means all of the network trap tasks return immediately. Check the Post register contents to determine the results.

TRAP #15 is used for I/O.  Put the task number in lower 8 bits of D0.

 Task

 100  Configure as network Client.
   Pre:
     D1.L  {31..............16}{15......8}{7......0}
     Bits 0-7,  0 for UDP, 1 for TCP, all other values reserved
     Bits 8-15, Reserved for future use
     Bits 16-31, Port number
       Port numbers 0-1023 are used for well-known services. Port numbers 1024-65535 may be freely used.
     (A2) IP address to connect to as null terminated string (e.g. '192.168.1.100',0) or
            null terminated domain name (e.g. 'www.easy68k.com',0)
   Post:
     D0.L is 0 on success, non zero on error
     Error codes:
     Bits 0-15 Low word of D0
       1 - general error
       2 - network initialization failed
       3 - invalid socket
       4 - get host by name failed
       5 - bind failed
       6 - connect failed
       7 - port already in use
       8 - domain not found
       All other values reserved
     Bits 16-31 High word of D0, extended error code (see below)
     (A2) IP address connected to as null terminated string

Example:

        move.b  #100,d0               ; create network client
        move.l  #(2048 << 16 + 0),d1  ; port 2048, UDP
        lea     serverIP,a2           ; IP to connect
        trap    #15
        ...
        ...

serverIP dc.b   '192.168.1.101',0
 

 Visit www.EASy68K.com for examples.

 101  Configure as network Server.
 May not be configured as Server and Client at the same time.
   Pre:
     D1.L  {31..............16}{15......8}{7......0}
     Bits 0-7, 0 for UDP, 1 for TCP, all other values reserved
     Bits 8-15, Reserved for future use
     Bits 16-31, Port number
       Port numbers 0-1023 are used for well-known services. Port numbers 1024-65535 may be freely used.
   Post:
     D0.L is 0 on success, non zero on error
     Error codes:
     Bits 0-15 Low word of D0
       1 - general error
       2 - network initialization failed
       3 - invalid socket
       4 - get host by name failed
       5 - bind failed
       6 - connect failed
       7 - port already in use
       8 - domain not found
       All other values reserved
     Bits 16-31 High word of D0, extended error code (see below)
 102  Send data. (Deprecated, use 106)
  Pre:
    D1.L  {31..............16}{15..............0}
    Bits 0-15, Number of bytes to send
    Bits 16-31, Reserved for future use
    (A1) data to send
    If server
      (A2) IP address of client as null terminated string (e.g. '192.168.1.100',0)
  Post:
    D0.L is 0 on success, non zero on error. Success does not indicate data was sent.
    Bits 0-15 Low word of D0
      1 - send failed
      All other values reserved
    Bits 16-31 High word of D0, extended error code (see below)
    D1.L number of bytes sent. 0 if no data was sent. Unchanged on error.
 103  Receive data. (Deprecated, use 107)
  Pre:
    D1.L  {31..............16}{15..............0}
    Bits 0-15, Number of bytes to receive.
    Bits 16-31, Reserved for future use.
    (A1) received buffer, must be large enough to hold D1.W bytes.
  Post:
    D0.L is 0 on success, non zero on error. Success does not indicate data was received.
    Bits 0-15 Low word of D0
      1 - receive failed
      All other values reserved
    Bits 16-31 High word of D0, extended error code (see below)
    D1.L number of bytes received. 0 if no data has been received. Unchanged on error.
    (A2) IP address of sender as null terminated string.
 104  Close connections
  Pre:
    If TCP server
      D1.L IP address of connection to close, 0 to close all.
  Post:
    D0.L is 0 on success, non zero on error
    Bits 0-15 Low word of D0
      1 - close failed
      All other values reserved
    Bits 16-31 High word of D0, extended error code (see below)
 105  Get local IP address
  Pre:
    The network has been initialized with task 100 or 101
  Post:
    D0.L is 0 on success, non zero on error
    Bits 0-15 Low word of D0
      1 - get local IP failed
      All other values reserved
    Bits 16-31 High word of D0, extended error code (see below)
    (A2) local IP address as null terminated string. Max size 16 characters including null.
 106  Send data on specified port.
  Pre:
    D1.L  {31..............16}{15..............0}
      Bits 0-15, Number of bytes to send
      Bits 16-31, Port number
        Port numbers 0-1023 are used for well-known services. Port numbers 1024-65535 may be freely used.
    (A1) Data to send
    If server
      (A2) IP address of client as null terminated string (e.g. '192.168.1.100',0)
  Post:
    D0.L   {31..............16}{15..............0}
      Bits 0-15, 0 on success, non zero on error. Success does not indicate data was sent.
        1 - Send failed
        All other values reserved
      Bits 16-31 Extended error code (see below)
    D1.L  {31..............16}{15..............0}
      Bits 0-15, Number of bytes received. 0 if no data has been received. Unchanged on error.
      Bits 16-31, Reserved for future use
 107  Receive data and port number
  Pre:
    D1.L  {31..............16}{15..............0}
      Bits 0-15, Number of bytes to receive.
      Bits 16-31, Reserved for future use.
    (A1) received buffer, must be large enough to hold D1.W bytes.
  Post:
    D0.L  {31..............16}{15..............0}
      Bits 0-15, 0 on success, non zero on error. Success does not indicate data was received.
        1 - receive failed
        All other values reserved
      Bits 16-31 High word of D0, extended error code (see below)
    D1.L  {31..............16}{15..............0}
      Bits 0-15, Number of bytes received. 0 if no data has been received. Unchanged on error.
      Bits 16-31, Port number of received data
    (A2) IP address of sender as null terminated string.

Extended Error Codes in high word of D0

$2714 - A blocking operation was interrupted
$271D - Socket access permission violation
$2726 - Invalid argument
$2728 - Too many open sockets
$2735 - Operation in progress
$2736 - Operation on non-socket
$2737 - Address missing
$2738 - Message bigger than buffer
$273F - Address incompatible with protocol
$2740 - Address is already in use
$2741 - Address not valid in current context
$2742 - Network is down
$2743 - Network unreachable
$2744 - Connection broken during operation
$2745 - Connection aborted by host software
$2746 - Connection reset by remote host
$2747 - Insufficient buffer space
$2748 - Connect request on already connected socket
$2749 - Socket not connected or address not specified
$274A - Socket already shut down
$274C - Operation timed out
$274D - Connection refused by target
$274E - Cannot translate name
$274F - Name too long
$2750 - Destination host down
$2751 - Host unreachable
$276B - Network cannot initialize, system unavailable
$276D - Network has not been initialized
$2775 - Remote has disconnected

(Refer to Winsock file winerror.h for unlisted error codes )