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

SPI Programming Examples
SPI Programming Manual427506-006
E-47
Example E-11: A Simple SPI Server in TAL
! Put error list token
IF err := ssputtkn (res^buffer, zspi^tkn^errlist) THEN
BEGIN
CALL display^spi^error (err, zspi^val^ssputtkn,
zspi^tkn^errlist, false);
RETURN;
END;
l^err^def.z^ssid ':=' my^ssid FOR 12 BYTES;
l^err^def.z^error := p^err^num; !Error number returned from validate^tokens
IF err := ssputtkn (res^buffer, zspi^tkn^error, l^err^def) THEN
BEGIN
CALL display^spi^error (err, zspi^val^ssputtkn,
zspi^tkn^error, false);
RETURN;
END;
!Put endlist token for end of response (End list of Error list)
IF err := ssputtkn (res^buffer, zspi^tkn^endlist) THEN
BEGIN
CALL display^spi^error (err, zspi^val^ssputtkn,
zspi^tkn^endlist, false);
RETURN;
END;
!Put endlist token for end of response (End list of Data list)
IF max^resp THEN
IF err := ssputtkn (res^buffer, zspi^tkn^endlist) THEN
BEGIN
CALL display^spi^error (err, zspi^val^ssputtkn,
zspi^tkn^endlist, false);
RETURN;
END;
END; ! End of error^response procedure
?PAGE "PROC initialization"
!==========================================================================!
! Proc : initialization !
! Function : This procedure will open $RECEIVE and the home term. It also !
! sets the server^banner and the SSID. !
!==========================================================================!
PROC initialization;
BEGIN
INT l^filename [0:11] := ["$RECEIVE",8 * [" "]];
INT l^err;
server^banner.z^b ':=' " " & server^banner.z^b [0] FOR 49 BYTES;
server^banner.z^b ':=' "TAL SERVER Version 1.01 (14APR95)";
!Assign values to ssid definitions
my^ssid ':=' [zspi^val^tandem,
zspi^ssn^null, version];
bufsize := max^bufsize;
rcv^file^num := -1;
!open $RECEIVE
startup^recvd :=0;
WHILE rcv^file^num = -1 DO !retry opening $RECEIVE until ok
BEGIN
CALL open (l^filename, rcv^file^num, %40000, 5); ! Recv depth = 5
END;
Example E-11. TAL File: A Simple SPI Server (page 3 of 10)