SPI Programming Manual (G06.24+, H06.03+, J06.03+)
SPI Programming Examples
SPI Programming Manual—427506-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)










