pTAL Reference Manual (G06.24+, H06.09+, J06.03+)
EXTADDR:variable
is the address to which $MOVEANDCXSUMBYTES moves data. When
$MOVEANDCXSUMBYTES completes, destaddr points to the memory location following
the last byte written.
srcaddr
input,output
EXTADDR:variable
is the address from which bytes are read. When $MOVEANDCXSUMBYTES completes,
srcaddr points to the memory location following the last byte read.
count
input
uINT:value
is the number of bytes to move.
$MOVEANDCXSUMBYTES transfers count bytes from srcaddr to destaddr and computes a
checksum (bytewise exclusive “or”) on the data moved. When $MOVEANDCXSUMBYTES completes,
srcaddr points to the immediate right of the last byte read, destaddr points to the immediate
right of the last byte written, and checksum holds the newly computed checksum.
$MOVEANDCXSUMBYTES does not ensure that the source and destination buffers do not overlap.
Example 280 $MOVEANDCXSUMBYTES Routine
INT checksum;
INT .EXT source;
INT .EXT dest;
INT(32) count;
checksum := 0;
$MOVEANDCXSUMBYTES(checksum, @dest, @source, count);
$MOVENONDUP
$MOVENONDUP moves words from one location to another until it encounters two adjacent
identical words.
NopTAL privileged procedure
NoCan be executed only by privileged procedures
YesSets condition code
NoSets $CARRY
NoSets $OVERFLOW
destaddr
input,output
EXTADDR:variable
is the address to which words are moved. When $MOVENONDUP completes, destaddr
is the address after which $MOVENONDUP stored the last byte.
328 Built-In Routines