pTAL Conversion Guide

pTAL Built-In Routines
pTAL Conversion Guide527302-002
18-18
$COUNTDUPS
$CHECKSUM accumulates the checksum by performing an exclusive-or operation on
the accumulated checksum and wordcount successive 16-bit words, starting at
bufferaddr. When $CHECKSUM completes, checksum holds the accumulated
checksum and buffaddr is unchanged.
$COUNTDUPS
$COUNTDUPS counts the number of consecutive 16-bit words, starting at the
beginning of a buffer, that are equal to the first word in the buffer.
Figure 18-2. TAL Code Equivalent to $CHECKSUM Routine
STACK checksum, bufferaddr, wordcount;
CODE(XSMX);
STORE checksum;
Example 18-10. Call to $CHECKSUM Routine
LITERAL buffer_len = 100;
INT c_sum_val;
INT .EXT buffer1 [ 0:buffer_len - 1 ];
INT .EXT buffer2 [ 0:buffer_len - 1 ];
buffer1 ':=' [%H0123, %H4567, %H89AB];
c_sum_val := 3;
$CHECKSUM(c_sum_val, @buffer1, buffer_len);
! Value of c_sum_val is now %HCDEF
! Checksum buffer2 in same checksum word as buffer1
$CHECKSUM(c_sum_val, @buffer2, buffer_len);
! c_sum_val now has combined checksum of buffer1 and buffer2
pTAL privileged procedure No
Can be executed only by privileged procedures No
Sets condition code No
Sets $CARRY No
Sets $OVERFLOW No
,
) ;
VST614.vsd
($COUNTDUPS
,
duplicationcount
scraddr
maxwords