SPI Programming Manual (G06.24+, H06.03+, J06.03+)

SPI Programming Examples
SPI Programming Manual427506-006
E-45
Example E-11: A Simple SPI Server in TAL
Example E-11. TAL File: A Simple SPI Server (page 1 of 10)
-- File name: SETSERV
-- SPI EXAMPLE TAL Basic Server model.
--
?SYMBOLS, INSPECT
LITERAL
max^bufsize = 1010, ! in bytes
version = %H4414; ! Set to the value: "D20"
?SOURCE SETCDECS
?SOURCE SETRDECS
INT
context^count, ! Number of CONTEXT tokens
dest^idx, ! Destination index for SSMOVETKN
file^error,
max^resp, ! From the SPI message
object^type, ! Object type
rcv^file^num, ! $RECEIVE’s file number
resp^type, ! From the SPI message
source^idx, ! Source index for SSMOVETKN
spi^buffer^size, ! Size of last SPI buffer read.
spi^command, ! From the SPI message
startup^recvd, ! Indicates if startup msg received
tkn^count, ! The number of tokens
tkn^retcode;
STRUCT .out^string (string^template); ! output string
DEFINE res^buffer = b2#; ! Response buffer (same as b2)
?NOLIST, SOURCE ZCOMTAL
?LIST
?NOLIST, SOURCE $SYSTEM.SYSTEM.EXTDECS0 (CLOSE, DEBUG, DNUMOUT, FILEINFO,
? OPEN, READUPDATEX, REPLYX, SHIFTSTRING,
? SPI_BUFFER_FORMATFINISH_, SPI_BUFFER_FORMATNEXT_, SPI_BUFFER_FORMATSTART_,
? SSGET, SSGETTKN, SSINIT, SSMOVETKN, SSPUT, SSPUTTKN,
? STOP, WRITEX)
?LIST
?PAGE "FORWARD DECLARATIONS"
PROC build^hdr^response;
FORWARD;
PROC error^response (p^err^num);
INT p^err^num; ! error number
FORWARD;
PROC initialization;
FORWARD;
PROC process^spi^buffer;
FORWARD;
PROC process^requests;
FORWARD;
INT PROC validate^tokens;
FORWARD;
INT PROC verify^msg (p^count);
INT p^count;
FORWARD;