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

SPI Programming Examples
SPI Programming Manual427506-006
E-30
Example E-9: A Simple SPI Requester in TAL
4 ->
display^spi^buffer := true;
5 ->
display^spi^buffer := false;
6 ->
sline ':=' " " -> @sp;
CALL writex (term, sline, @sp '-' @sline);
CALL stop (process^id); ! Stop the server.
CALL stop;
OTHERWISE ->
sline ':=' " " -> @sp;
CALL writex (term, sline, @sp '-' @sline);
sline ':=' "Invalid option. Try again." -> @sp;
CALL writex (term, sline, @sp '-' @sline);
END;
END
UNTIL l^work^to^do = true;
END; -- of PROC get^string
?PAGE "initialization"
!==========================================================================!!
Proc : initialization !
! Function : This procedure will open $RECEIVE and the home term. !
! It then starts the server. !
!===========================================================================
PROC initialization;
BEGIN
STRING
.l^start^ptr; ! Scan pointer
INT l^termname [0:11],
l^filename [0:11] := ["$RECEIVE", 8*[" "]],
l^recv^file^num,
l^count^read,
l^init^complete;
! Open $RECEIVE (sys msgs)
CALL open (l^filename, l^recv^file^num, %40000, 1);
IF <> THEN CALL get^file^error (-1);
! Read $RECEIVE messages
l^init^complete := false;
WHILE l^init^complete = false DO
BEGIN
CALL readupdatex (l^recv^file^num, start^buffer, $LEN(start^buffer),
l^count^read);
IF <> THEN
BEGIN
CALL fileinfo (l^recv^file^num, file^error);
IF file^error <> 6 THEN CALL debug; ! Not a system message
END;
CASE start^buffer.msgcode OF
BEGIN
-1 -> ! Process STARTUP message
startup^msg ':=' start^buffer FOR $LEN (start^buffer) BYTES;
Example E-9. TAL File: A Simple SPI Requester (page 3 of 8)