Quick post: Determining length in Commodore Assembly
By Michael Doornbos
- One minute read - 160 wordsA common task in our code is to determine the length of something. In this example, let’s check the length of a string like “are you keeping up?”
In Python, this is crazy easy.
#!/usr/bin/env python
message = "are you keeping up?"
len(message)
In 6510 Assembly, this is also easy. Not crazy easy, but straightforward anyway.
messagelength
ldx #$00
checkdel
lda message,x
cmp #$00 ; or whatever we're using as a delimeter
beq done
inx
jmp checkdel
done
stx messagelen
rts
.byte messagelen 0
message .null "are you keeping up?"
Pretty easy right?
This assumes some sort of sane delimiter. In this case we’re checking for zero, which the .null directive in Turbo Macro Pro appends to the end of the string.
This works well as long as you don’t need the “@” PETSCII screencode which is zero on the Commodore. For these things I usually stick to ASCII so using zero is a sensible delimiter for me.
Happy Coding!