view lib/alib/b09strlen.as @ 3054:22ddd48b4ec2

level1 krn: Fix scheduler bug that only affected 6309 The original 6809 binary was correct, but it was disassembled and interpreted wrongly, so that reassembly went wrong on 6309.
author Tormod Volden <debian.tormod@gmail.com>
date Sun, 25 Jan 2015 22:36:02 +0100
parents 03f26e88b809
children
line wrap: on
line source

**********************************

* BASIC09 String Length: find length of a BASIC09 string
*                        which can be terminated by a $ff 
*                         =or= allocated storage size

* ENTRY: X=start of string
*        D=max allocated

* EXIT: D=actual length
*       all other regs (except cc) preserved

 nam Find Basic09 String Length
 ttl Assembler Library Module


 section .text

B09STRLEN:
 pshs d,x,y
 tfr d,y max. possible size to Y

loop
 lda ,x+ get char from string
 inca this effects a cmpa #$ff
 beq exit reached terminator
 leay -1,y if string max leng, no terminator
 bne loop no yet, check more

exit
 puls d get max possible size
 pshs y unused size in memory
 subd ,s++ find actual length
 puls x,y,pc 

 endsect