[Coco] lbsr and rts

Darren A mechacoco at gmail.com
Wed Sep 16 15:13:22 EDT 2009

On 9/16/09, Wayne Campbell <asa.rand at yahoo.com> wrote:
> I may be missing something, but I thought calls to subroutines required a
> rts instruction. In Basic09, there has to be a RETURN statement for any
> given GOSUB, but not necessarily one-for-one.


In 6809 assembly language you will often see a PULS instruction rather
than an RTS to return from a subroutine.  This is often the case when
registers have been preserved by the routine's prolog:

    PULS  B,X,PC

In some cases the subroutine may pull the return address from the
stack into an index register and then jump to it:

    PULS  X
    JMP   ,X

Less often, the return address may simply be purged from the stack in
order to eliminate the subroutine "call":

    LEAS  2,S

In a nutshell, there are no hard and fast rules as to how assembly
code must be structured.


More information about the Coco mailing list