| |
Enable to receive USER defined packets
Server |
Y |
Station |
Y |
Interrupt |
21h |
Input |
Output |
AX
|
FFh |
9Ah |
|
|
AX |
|
|
|
|
|
BX |
CX |
|
|
|
|
CX |
ES:BX |
Address
of Receiving Buffer |
|
|
DX |
Notes: 1. The receiving buffer has the following format:
FFh |
Length |
D. ID |
S. ID |
Code |
Data ... |
1 |
2 |
1 |
1 |
1 |
n |
FFh (1 byte) : This is the value of first byte.
LENGTH (2 bytes) = Length of DATA field + 3
D.ID (1 byte) : Dest Id = Receiving station Id for ARCnet
= Receiving station Id for Ethernet
= Receiving station Id x 4 for I+ boards
or = 0FFh for broadcasting message
S.ID (1 byte) : Sending station Id
CODE (1 byte) = 11h (all other codes are reserved for
TopWare)
DATA (maximum 2000 bytes) : Messages have been received
2. After returning from this function call, the "LENGTH" of the
field MUST BE checked to determine if a message is actually
available on the buffer to be received. If:
LENGTH = 0 -> no message available to be received
LENGTH NOT = 0 -> message available to be received
3. This function must be re-invoked after the message has been
received in order to receive the next USER defined message
(CODE = 11h).
Programming example:
MOV AH,0FFh
MOV AL,9Ah
PUSH CS
POP ES
MOV BX, offset ReceiveBuffer
INT 21h
@@1:
CMP WORD PTR ES:[BX+1],0 ; Check LENGTH field
JZ @@1 ; no message is available
.
. ; Process message to be received
. ;
MOV WORD PTR ES:[BX+1],0 ; Clear LENGTH to 0 |