If you're not too keen on saving up on the transmitted bytes, this is the easy way out.
Code:
MyString: var byte[30] ' this is where the string will lie
CheckSum: var word ' quite obvious, eh?
LocalCnt: var byte ' a counter
Checksum_it:
CheckSum = 0 ' start with 0
for LocalCnt = 1 to 30 ' change this to suit the length of string
' you will parse
' add the value of the character you read to checksum
' after removing the ascii bias of character '0'
Checksum = Checksum + MyString[LocalCnt]-$30
next
return ' your checksum is cooked and ready to eat :)
main:
gosub CheckSum_it
gosub SendTheString ' you might be having this
hserout [Checksum] ' send the checksum
goto main
This code is a concept - not tested or certified. It may not work as I am rusty these days. Too little rain with high humidity does this often 
Use this as a guide to refine your thoughts
Good luck
Bookmarks